草庐IT

kotlin-stdlib

全部标签

oop - 了解 Kotlin 中的特征

在Kotlin我们将有可能创建一个“可能需要在调用端扩展类的特征”,例如classBar{}traitT1:Bar{}classFoo:Bar,T1,T2,T3{}classWrong:T1,T2//error:WrongshouldextendBar我无法想象可以应用这种结构的任何流程。谁能告诉我为什么我们需要它? 最佳答案 我认为这样做的主要原因是允许trait使用具体类中定义的方法和属性。想象一下,Bar有一些基本方法,可以在此基础上构建其他便利方法......通过让trait要求它用于Bar的子类,你可以在trait中定义调

kotlin - 如何将自定义 View 组添加到 Anko DSL?

Ankodocs告诉我们如何向DSL添加自定义View。但是如果我的自定义View是View组,就会出现问题。classMyFrameLayout(context:Context):FrameLayout(context)funViewManager.myFrameLayout(init:MyFrameLayout.()->Unit={})=ankoView({MyFrameLayout(it)},init)classMyUI:AnkoComponent{overridefuncreateView(ui:AnkoContext)=with(ui){myFrameLayout{textV

kotlin - 如何将自定义 View 组添加到 Anko DSL?

Ankodocs告诉我们如何向DSL添加自定义View。但是如果我的自定义View是View组,就会出现问题。classMyFrameLayout(context:Context):FrameLayout(context)funViewManager.myFrameLayout(init:MyFrameLayout.()->Unit={})=ankoView({MyFrameLayout(it)},init)classMyUI:AnkoComponent{overridefuncreateView(ui:AnkoContext)=with(ui){myFrameLayout{textV

kotlin - 在 Kotlin 中使用 Javascript 库

我最后一次使用Kotlin是在2015年12月,当时我使用它来solveacoupleofProjectEulerproblems.这次我想试试它与Javascript的互操作性。现在我的问题是,我们如何在Kotlin中导入/使用现有的Javascript库?我见过一些人使用native关键字,我只想简单解释一下。 最佳答案 没有native关键字了,有@native注释。目前,它是有效的解决方案,您可以将它与Kotlin编译器的1.0.x分支一起使用。但是,我们将弃用此注释以支持extern注释,因此请准备好最终为1.1.x分支重

kotlin - 在 Kotlin 中使用 Javascript 库

我最后一次使用Kotlin是在2015年12月,当时我使用它来solveacoupleofProjectEulerproblems.这次我想试试它与Javascript的互操作性。现在我的问题是,我们如何在Kotlin中导入/使用现有的Javascript库?我见过一些人使用native关键字,我只想简单解释一下。 最佳答案 没有native关键字了,有@native注释。目前,它是有效的解决方案,您可以将它与Kotlin编译器的1.0.x分支一起使用。但是,我们将弃用此注释以支持extern注释,因此请准备好最终为1.1.x分支重

kotlin - 使用具有不同名称的构造函数参数覆盖接口(interface)属性

我有这个代码:classAnyUsernamePersistentNodePath(overridevalvalue:String):AnyPersistenceNodePath{overridevalkey="username"}和interfaceAnyPersistenceNodePath{valkey:Stringvalvalue:String}到目前为止,一切都很好。现在我希望构造函数中的参数value被命名为username,而不是value。但是,显然,继续覆盖接口(interface)的属性value。这在Kotlin中可行吗?我知道我能做到:classAnyUsern

kotlin - 使用具有不同名称的构造函数参数覆盖接口(interface)属性

我有这个代码:classAnyUsernamePersistentNodePath(overridevalvalue:String):AnyPersistenceNodePath{overridevalkey="username"}和interfaceAnyPersistenceNodePath{valkey:Stringvalvalue:String}到目前为止,一切都很好。现在我希望构造函数中的参数value被命名为username,而不是value。但是,显然,继续覆盖接口(interface)的属性value。这在Kotlin中可行吗?我知道我能做到:classAnyUsern

Kotlin 只读属性,带和不带 getter

这些是等价的吗?valfoo=someFooReturningFunction()valfooget()=someFooReturningFunction()按照我理解文档的方式,它们是,但在我自己的测试中它们不是。使用get()someFooReturningFunction()会在每次访问属性时进行评估,而不是仅评估一次。 最佳答案 它们不等价。自定义getter确实会在每个属性访问时评估,类似于普通函数,而没有自定义访问器的val属性仅在初始化时评估一次(实际上存储在finalJVM平台上的字段)。这里至少还有一些不同之处:控

Kotlin 只读属性,带和不带 getter

这些是等价的吗?valfoo=someFooReturningFunction()valfooget()=someFooReturningFunction()按照我理解文档的方式,它们是,但在我自己的测试中它们不是。使用get()someFooReturningFunction()会在每次访问属性时进行评估,而不是仅评估一次。 最佳答案 它们不等价。自定义getter确实会在每个属性访问时评估,类似于普通函数,而没有自定义访问器的val属性仅在初始化时评估一次(实际上存储在finalJVM平台上的字段)。这里至少还有一些不同之处:控

enums - 在 Kotlin 中直接引用枚举实例,无需类

在Kotlin中,当E与我使用其实例的代码位于同一文件中时,我无法直接引用枚举的实例:enumclassE{A,B}我想做什么:vale=A我能做什么:vale=E.A这可能吗? 最佳答案 是的,这是可能的!在Kotlin中,可以像大多数其他东西一样导入枚举实例,因此假设枚举类E在默认包中,您只需将importE.*添加到源文件的顶部即可想直接使用它的实例。例如:importE.*vala=A//nowtranslatestoE.A每个实例也可以单独导入,而不是只导入枚举中的所有内容:importE.AimportE.B//etc.