var myString:Object = "true";
if (myString.toLowerCase() == "true")
或
if (myString is Boolean)
或
if (myString == Boolean)
检查对象变量是否保持布尔值(true或false)是最好的。或者哪一个是对的?
...谢谢
答案 0 :(得分:1)
简短的回答是:
第一条指令:if (myString.toLowerCase() == "true")
。
答案很长:
仍然是第一条指令:if (myString.toLowerCase() == "true")
。
因为你确实在检查你的字符串是否等于"true"
,而在第二条指令中你正在检查你的字符串是否是Boolean
,而在第三条指令中你检查你的字符串是否是Boolean
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
班。
希望可以提供帮助。
答案 1 :(得分:0)
老实说,您的示例代码没有多大意义:您有一个Object
变量,但是您使用String
认为它是toLowerCase()
,但您检查是否它也是Boolean
。如果您知道它是一个字符串,请将您的变量设为String
:
var myString:String = "true";
如果你不知道它是一个字符串,你需要检查它是否是一个字符串,否则如果它不是一个字符串你就会收到错误:
if (myObject is String && (myObject as String).toLowerCase() == "true")
如果它可以是布尔值,你也应该将它检查为布尔值:
else if(myObject is Boolean && (myObject as Boolean) == true)
一般来说,在这段代码之前的某个地方进行某种解码过程会更好,这样你就可以知道你正在处理什么类型的数据,并且比较是直截了当的。例如,JSON数据结构的JSON.parse()
将导致布尔值的实际布尔值,您可以将其解码为具有类型Boolean
属性的类型对象。你在这里的示例代码非常脆弱。