草庐IT

kotlin-stdlib

全部标签

null - Kotlin 如果不为空

如果var不是null,那么使用with最简洁的方法是什么?我能想到的最好的方法是:arg?.let{with(it){}} 最佳答案 您可以使用Kotlin扩展函数apply()或run()取决于您是希望它是fluent(在末尾返回this)还是转换(返回末尾有一个新值):应用的用法:something?.apply{//thisisnowthenon-nullarg}和流利的例子:user?.apply{name="Fred"age=31}?.updateUserInfo()使用run转换示例:valcompanyName=us

kotlin - 函数定义: fun vs val

我很好奇在Kotlin中定义成员函数的建议方法是什么。考虑这两个成员函数:classA{funf(x:Int)=42valg=fun(x:Int)=42}这些似乎完成了同样的事情,但我发现了细微的差别。val例如,基于定义的定义在某些情况下似乎更灵活。也就是说,我无法找到一种直接的方式来撰写f使用其他功能,但我可以使用g.为了玩弄这些定义,我使用了funKTionale图书馆。我发现这不能编译:valz=gandThenA::f//fisamemberfunction但是如果f被定义为val指向相同的函数,它会编译得很好。为了弄清楚发生了什么,我要求IntelliJ明确定义::f的类型

file - 在 Kotlin 中递归列出文件

要使用kotlin列出目录中的文件,我使用了list()和listFiles()函数:File("/tmp").list().forEach{println(it)}File("/tmp").listFiles().forEach{println(it)}但是,我怎样才能递归地列出文件呢? 最佳答案 使用.walk(...)之一,.walkBottomUp()或.walkTopDown()File的扩展名,它们仅在文件出现的顺序上有所不同,并且都产生FileTreeWalk,实现Sequence:File("/tmp").walkT

kotlin - 无需额外对象分配的数组/列表迭代

我正在开发一个用Kotlin编写的游戏,并且正在研究如何改善GC流失率。流失的主要来源之一是在主游戏/渲染循环中调用的for循环,导致分配迭代器。翻到文档,我找到了这一段:Aforloopoveranarrayiscompiledtoanindex-basedloopthatdoesnotcreateaniteratorobject.Ifyouwanttoiteratethroughanarrayoralistwithanindex,youcandoitthisway:for(iinarray.indices)print(array[i])Notethatthis“iterationt

properties - Kotlin 中是否有 didSet/willSet 模拟?

我喜欢这种Swift语法;它对很多事情都非常有帮助:varfoo:Bar=Bar(){willSet{baz.prepareToDoTheThing()}didSet{baz.doTheThing()}}我很想在Kotlin中做到这一点。但是,Ican'tfindthepropersyntax!Kotlin中有这样的东西吗?varfoo:Bar=Bar()willSet(){baz.prepareToDoTheThing()}didSet(){baz.doTheThing()} 最佳答案 虽然Kotlin没有为属性变化观察提供内置的

java - 为什么在 Java 中实现返回 Unit 的 Kotlin 函数时必须返回 Unit.INSTANCE?

如果我有一个Kotlin函数funf(cb:(Int)->Unit)我想从Java中调用f,我必须这样做:f(i->{dosomething();returnUnit.INSTANCE;});看起来很丑。为什么我不能像f(i->dosomething());这样写,因为Kotlin中的Unit等价于voidjava? 最佳答案 Unit在Kotlin中主要相当于void在Java中,但是只有在JVM规则允许的情况下。Kotlin中的函数类型由如下接口(interface)表示:publicinterfaceFunction1:Fun

c++ - 如何通过引用传递 stdlib 列表数组

我是C++stdlib的初学者。我学习了stdlib教程,并且正在使用由stdlib列表创建的邻接列表来实现“图中连接的组件数”。我想知道如何通过引用dfs来传递这个列表数组功能?另外,我的一位friend说默认情况下它将通过引用传递。是真的吗?请说清楚。哪一个是正确的?例如:我的列表数组:listL[v];我的函数调用:dfs(L[v],k);我的函数定义:voiddfs(listList,intindex);我的函数原型(prototype):voiddfs(listL,int);(或)我的列表数组:listL[v];我的函数调用:dfs(L,k);我的函数定义:voiddfs(l

c++ - stdlib 是否提供类型列表?

在现代C++中,标准库是否提供类型列表模板?intmain(){usingint_types=type_list;std::cout::value::type).name();}请注意,int_types不存储任何值(与std::tuple一样)。它只是一个类型列表。 最佳答案 在我看来,在现代C++标准库中,最接近你想要的是std::tuple。如果问题是std::tuple存储所列类型的值(所以,我想,实例化该类型的对象可能是个问题)很容易编写一个可实例化的对象来包装std::tupleusing没有实例化std::tuple本

ios - 链接 iOS Framework 时无法在 Kotlin Multiplatform 中运行 "linkDebugFrameworkIos"

我正在尝试将iOS.framework链接到KotlinMultiplatform/Native,以便我可以在Kotlin中使用它。我成功地将框架链接到KotlinMultiplatform/Native,并且正确的包包含我链接的header。但是,每当我尝试构建项目时,Undefinedsymbolsforarchitecture就会发生。我已经尝试在iosX64预设和iPhoneiosArm64预设上为iPhone模拟器编译不同的架构。我尝试将.framework本身添加到普通XCode项目中,它在模拟器和iPhone上运行良好。这是.def文件//engine.deflangua

ios - kotlin native 无法导入 khttp

我在使用khttp库时遇到问题(它应该在Kotlin中工作并提供与python请求的库功能相同的功能)我的build.gradle包含这些字符串:repositories{mavenCentral()}dependencies{compile"org.jetbrains.kotlin:kotlin-stdlib"compile"com.github.jkcclemens:khttp:-SNAPSHOT"}项目构建成功,但使用importkhttp导入不起作用一般来说,我使用kotlin作为IOS项目的框架,并且需要khttp来连接到longpoll服务器。如果khttp不适用于我的情况