草庐IT

Kotlin-script

全部标签

kotlin - kotlin 扩展属性的惰性初始化器中的这个引用

我正在尝试Kotlin并想为Activity实现一个惰性扩展属性:/***Activitymodule*/valActivity.activityModule:ActivityModulebylazy{ActivityModule(this)}编译器错误:'this'isnotdefinedinthiscontext我如何才能将其限定为Activitythis?我已阅读aguide但无法得到它。this@Activity表示引用未解析。 最佳答案 此处的其他答案指出,在stdlib的lazy接收器的当前实现中引用this是不可能的,

kotlin - 我们是否应该避免将函数命名为与 Kotlin 中现有类相同的名称?为什么?

Kotlin允许将函数命名为与现有类相同的名称,例如带有初始化函数的HashSet可以这样实现:funHashSet(n:Int,fn:(Int)->T)=HashSet(n).apply{repeat(n){add(fn(it))}}使用时,它看起来像一个普通的HashSet构造函数:varreal=HashSet()varfake=HashSet(5){"Element$it"}应该避免还是鼓励这样做?为什么? 最佳答案 UPD在更新的编码约定中,有一个sectiononthistopic:FactoryfunctionsIfy

kotlin - 我们是否应该避免将函数命名为与 Kotlin 中现有类相同的名称?为什么?

Kotlin允许将函数命名为与现有类相同的名称,例如带有初始化函数的HashSet可以这样实现:funHashSet(n:Int,fn:(Int)->T)=HashSet(n).apply{repeat(n){add(fn(it))}}使用时,它看起来像一个普通的HashSet构造函数:varreal=HashSet()varfake=HashSet(5){"Element$it"}应该避免还是鼓励这样做?为什么? 最佳答案 UPD在更新的编码约定中,有一个sectiononthistopic:FactoryfunctionsIfy

double - Kotlin 中使用数据类型 Double 的范围

如果我尝试编译这段代码...funmain(args:Array){for(iin1.0..2.0){println(i)}}...我收到错误提示For-looprangemusthavean'iterator()'method如果我添加一个step...funmain(args:Array){for(iin1.0..2.0step.5){println(i)}}...然后我得到一个新错误:Kotlin:Unresolvedreference.Noneofthefollowingcandidatesisapplicablebecauseofreceivertypemismatch:pu

double - Kotlin 中使用数据类型 Double 的范围

如果我尝试编译这段代码...funmain(args:Array){for(iin1.0..2.0){println(i)}}...我收到错误提示For-looprangemusthavean'iterator()'method如果我添加一个step...funmain(args:Array){for(iin1.0..2.0step.5){println(i)}}...然后我得到一个新错误:Kotlin:Unresolvedreference.Noneofthefollowingcandidatesisapplicablebecauseofreceivertypemismatch:pu

kotlin - kotlin-native 有析构函数吗?

在kotlinnative中,有一个memScoped函数,当控制超出范围时,它会自动释放分配的内存。是否有类似本地对象的析构函数? 最佳答案 当前的Kotlin/Native不提供在内存中不再需要某个对象时调用方法的机制(Java语音中的终结器),但内联lambda很容易实现机制,类似于C++中的RAII。例如,如果您想确定某些资源在离开一定范围后总是被释放,您可以这样做:classResource{funtake()=println("took")funfree()=println("freed")}inlinefunwithR

kotlin - kotlin-native 有析构函数吗?

在kotlinnative中,有一个memScoped函数,当控制超出范围时,它会自动释放分配的内存。是否有类似本地对象的析构函数? 最佳答案 当前的Kotlin/Native不提供在内存中不再需要某个对象时调用方法的机制(Java语音中的终结器),但内联lambda很容易实现机制,类似于C++中的RAII。例如,如果您想确定某些资源在离开一定范围后总是被释放,您可以这样做:classResource{funtake()=println("took")funfree()=println("freed")}inlinefunwithR

android - Kotlin Android Extensions 是否缓存合成属性或每次调用 findViewById()?

如果我有一个简单的自定义View:myitem.xml访问kotlinx语法属性:importkotlinx.android.synthetic.main.myitem.view.*view.toolbar.text="Sometext"它在内部生成对findByViewID()的调用。所以我的问题是:是否为自定义View(如Activity)或每次调用findByViewID时缓存结果?出于性能原因,答案非常重要。 最佳答案 在当前版本(1.1.3)中,为Activity和fragment布局缓存View。对于RecyclerVi

android - Kotlin Android Extensions 是否缓存合成属性或每次调用 findViewById()?

如果我有一个简单的自定义View:myitem.xml访问kotlinx语法属性:importkotlinx.android.synthetic.main.myitem.view.*view.toolbar.text="Sometext"它在内部生成对findByViewID()的调用。所以我的问题是:是否为自定义View(如Activity)或每次调用findByViewID时缓存结果?出于性能原因,答案非常重要。 最佳答案 在当前版本(1.1.3)中,为Activity和fragment布局缓存View。对于RecyclerVi

java - 使用可变参数在 kotlin 中调用构造函数

有没有什么方法可以使用可变参数调用构造函数,而无需对数组参数进行硬编码(datain[0]、datain[10]等)。例如,constructor(varargdatain:String):this(datain[0],datain[1],datain[2]){}目前我是这样打电话的:publicclassparent(varvar1:String,varvar2:String){}publicclasschild(varvar3:String,var1:String,var2:String):parent(var1,var2){constructor(varargdatain:Str