草庐IT

kotlin-stdlib-jdk

全部标签

带有迭代器函数的 Kotlin 无限序列

我对如何在Kotlin中创建无限序列以用于惰性求值感到困惑。在Java中:IntStream.iterate(0,i->i+2).limit(100).forEach(System.out::println);但序列似乎比Java流更令人困惑。序列构造函数非常令人困惑,因为它说:/***Givenan[iterator]functionconstructsa[Sequence]thatreturnsvaluesthroughthe[Iterator]*providedbythatfunction.*Thevaluesareevaluatedlazily,andthesequenceis

operators - Kotlin:一元加/减运算符对数字有什么作用?

我注意到在Kotlin中已经为所有数字类型定义了unaryPlus和unaryMinus运算符。这些运算符的目的是什么?它们是否以某种方式连接到inc和dec的前缀形式? 最佳答案 其他人已经定义了unaryMinus的基本含义和unaryPlus,实际上在数字类型上,它们实际上甚至可能不被称为函数。例如,编码+x或x.unaryPlus()生成相同的字节码(其中x是类型Int):ILOAD1ISTORE2还有代码-x或x.unaryMinus()生成相同的字节码:ILOAD1INEGISTORE2但还有更多事情要做……那么为什么编

intellij-idea - 如何调试 Kotlin 序列/集合

取如下单行,可以表示为对集合或序列的一系列操作:valnums=(10downTo1)//.asSequence()ifwewantthistobeasequence.filter{it%2==0}.map{it*it}.sorted()//.asList()ifdeclaringitasequenceprintln(nums)//[4,16,36,64,100]假设我想在每个步骤中查看元素,它们将是(来自演绎):[10,9,8,7,6,5,4,3,2,1][10,8,6,4,2][100,64,36,16,4][4,16,36,64,100]不幸的是,没有好的方法可以使用调试器进行调

kotlin - 如果 kotlin 已经有 getter 和 setter,为什么在数据类中有 componentN 函数?

kotlin中有一个数据类,例如@EntitydataclassRecord(@Id@GeneratedValue(strategy=GenerationType.IDENTITY)valid:Long?=null,@Column(nullable=false,name="name")varname:String?=null)我可以调用component1和component2函数来访问属性。但是,当我声明属性var时,我有getter和setter,如果我声明属性val,我就有了getter。在这种情况下,componentN函数是否是多余的,为什么我们需要它们,因为getter似乎

kotlin - 伴随对象之外的访问方法 - Kotlin

我对kotlin还是很陌生,我想知道这是否可能,以及从伴随对象内部访问伴随对象外部的方法和变量是否违反最佳实践。例如classA{fundoStuff():Boolean=returntruecompanionobject{publicfunstuffDone():Boolean=returndoStuff()}}或者类似的东西谢谢 最佳答案 doStuff()是一个类的实例方法;调用它需要一个类实例。伴随对象的成员,就像Java中的静态方法一样,在范围内没有类实例。因此,要从伴随对象方法调用实例方法,您需要显式提供一个实例:cla

android - 检查EditText是否为空kotlin android

如何检查EditText是否为空?输入类型号packagecom.example.www.myapplicationimportandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundleimportkotlinx.android.synthetic.main.activity_main.*importjava.util.*classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate

kotlin - 使用 Kotlin 进行单元测试的 Dagger 2

在KotlinBlog有说明如何使Dagger2与Kotlin一起工作。一切都像魅力一样。到目前为止……我只是无法让它在测试中工作。DaggerTestSomeComponent不是从TestSomeComponent:SomeComponent生成的。我尝试了各种组合。包括在测试中创建全新的组件。还是什么都没有。有什么解决方法吗?或者我可以提供一些其他详细信息吗? 最佳答案 确保将kaptAndroidTest'com.google.dagger:dagger-compiler:2.0'添加到您的依赖项中。

android - Android 上的 Kotlin : map a cursor to a list

在Kotlin中,遍历AndroidCursor对象并将结果放入列表的最佳方法是什么?我的自动转换Java:vallist=ArrayList()while(c.moveToNext()){list.add(getStringFromCursor(c))}还有更惯用的方法吗?特别是,它可以在只读列表的单个分配中完成吗?比如……vallist=/*mystery*/.map(getStringFromCursor)...或其他一些排列,其中列表被分配完整的形式。 最佳答案 这就是我最后使用的方法,使用kotlin.sequences.

reflection - Kotlin,如何通过反射检索字段值

所以我在几个classes中有数百个字段我想在它们上编写一些方法,它们会自动println每个字段及其对应的值目前我有这个:innerclassVersion(valprofile:Profile){@JvmFieldvalMINOR_VERSION=glGetInteger(GL_MINOR_VERSION)funwrite(file:File?=null){//file.printWriter().use{out->out.pri}this::class.java.fields.forEach{println(it.isAccessible)println(it.getInt(it

operator-overloading - 在 Kotlin 中调用运算符和运算符重载

我了解了Invoke运算符,a()等价于a.invoke()关于Invoke运算符的内容是否比请解释的更多。此外,我没有得到任何Invoke运算符重载的示例。调用运算符重载可能吗?如果可能的话,任何人都可以用一个例子解释一下Invoke运算符重载吗?我对此一无所知。提前致谢。 最佳答案 是的,您可以重载invoke。这是一个例子:classGreeter(valgreeting:String){operatorfuninvoke(target:String)=println("$greeting$target!")}valhello