草庐IT

Kotlin-script

全部标签

oop - 了解 Kotlin 中的特征

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

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平台上的字段)。这里至少还有一些不同之处:控