草庐IT

as-patterns

全部标签

casting - Kotlin 中的 "as"和 "is"运算符有什么区别?

在Java中,我可以编写如下代码:voidcast(Aa){if(ainstanceofPerson){Personp=(Person)a;}}在Kotlin中,我应该怎么做?使用as运算符还是is运算符? 最佳答案 isX等价于instanceofXfooasX等价于((X)foo)此外,Kotlin会在可能的情况下执行智能转换,因此在您使用is检查类型后不需要额外的转换:openclassPerson:A(){valfoo:Int=42}openclassA然后:if(pisPerson){println(p.foo)//loo

pattern-matching - Kotlin 中元组的模式匹配

我有以下代码funchangeSelection(item:FileOrFolder,selected:Boolean){selection=when(item){isFolder->{when(selected){true->selection+itemfalse->selection-item}}isFile->{when(selected){true->selection+itemfalse->selection-item}}else->throwException("unreachable")}}当我在scala中习惯了这一点时,这对我来说看起来有点困惑defchangeSel

kotlin - "double exclamation"与 Kotlin 中的 "as"相同吗?

假设我们有像vartext:String?这样的变量。当我想将其转换为不可为空的类型时,我可以使用:文本!!文本为字符串它们的意思是一样的吗?我知道如果text为null,这些方式会抛出异常。 最佳答案 它们基本上是一样的。在Kotlin1.3(或更早版本)中,第一个将抛出KotlinNullPointerExcptionfornull,第二个将抛出TypeCastException。Kotlin1.4停止使用自己的异常,两个表达式都因常规NPE而失败,但as版本有一条详细消息:线程“main”java.lang.NullPoint

android - java.lang.IllegalArgumentException : Parameter specified as non-null is null: method kotlin. jvm.internal.Intrinsics.checkParameterIsNotNull

我收到了这个错误java.lang.IllegalArgumentException:指定为非空的参数为空:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数事件换行覆盖funonEditorAction(v:TextView,actionId:Int,event:KeyEvent)以下是整个代码。此代码最初是在java中,我使用AndroidStudio将其转换为Kotlin,但现在我收到此错误。我尝试重建和清理项目,但没有奏效。valaction=supportActionBar//gettheactionbara

android - IllegalArgumentException : Parameter specified as non-null is null

我收到以下运行时错误:checkParameterIsNotNull,parameteroneClickTokensatcom.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:0)atcom.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:1543)这是我

android - 使用 run-as 从内部存储中检索数据库或任何其他文件

在非root的android设备上,我可以使用带有我的包名称的run-as命令导航到包含数据库的数据文件夹。大多数文件类型我只满足于查看,但如果从android设备中提取我想提取的数据库。adbshell的这一部分是否有downloadcopy或move命令?我想下载数据库文件并使用数据库浏览器查看其内容。这里的一个答案涉及将整个应用程序包转换为压缩存档,但没有进一步的答案说明一旦完成并移动到机器上如何提取该存档,当可能有更直接的解决方案时让我非常迷茫开始 最佳答案 按设计userAndroid版本(在您解锁bootloader并使

android - "Avoid passing null as the view root"膨胀 View 以供 AlertDialog 使用时发出警告

我收到lint警告,在使用null作为parent膨胀View时避免将null作为View根传递,例如:LayoutInflater.from(context).inflate(R.layout.dialog_edit,null);但是,View将用作AlertDialog的内容,在AlertDialog.Builder上使用setView,所以我不这样做不知道应该作为parent传递什么。你认为在这种情况下parent应该是什么? 最佳答案 使用此代码在没有警告的情况下扩展对话框View:View.inflate(context,

mongodb - Scala MongoDB : result of query as list

我成功地将数据插入到mongodb数据库中,但我不知道如何从查询中提取数据。我使用默认的scalamongodb驱动器:"org.mongodb.scala"%%"mongo-scala-driver"%"1.1.1"documentation顺便说一句,似乎包含错误。当这是从文档复制粘贴时,此行会引发编译错误:collection.find().first().printHeadResult()这是我查询集合的方式:collection.find()如何将它转换为我可以迭代和处理的对象的scala集合?谢谢 最佳答案 是的,我同意

mongodb - 蒙哥 {$ne : null} not working as expected

当我发出以下查询时:db.users.find({"pic.status":{$ne:null}},{"pic":1}).toArray()我希望收到所有pic.status不为空的用户。然而,实际结果看起来是这样的:{"_id":ObjectId("4f1e1ab9cdf9dbaa160000bf"),"pic":{"id":"4f1e1ab9cdf9dbaa160000be","status":null}},{"_id":ObjectId("4f1e28480eaf38193d00006f"),"pic":{"id":"4f1e28480eaf38193d00006e","stat

mysql - mongodb 相当于 SELECT 字段 AS `anothername`

什么是mongodb等效的MySQL查询SELECTusernameAS`consname`FROM`consumer` 最佳答案 正如sammaye所说,你必须使用$project在aggregationframework重命名字段。所以你的情况是:db.consumer.aggregate([{"$project":{"_id":0,"consname":"$username"}}])很酷的是,在2.6.x版本中,聚合返回一个游标,这意味着它的行为类似于find。你也可以看看$rename运算符(operator)永久更改架构。