我正在尝试快速连接多个字符串3:
var a:String? = "a"
var b:String? = "b"
var c:String? = "c"
var d:String? = a! + b! + c!
编译时出现以下错误:
error: cannot convert value of type 'String' to specified type 'String?'
var d:String? = a! + b! + c!
~~~~~~~~^~~~
以前它可以迅速运行2。我不确定为什么它不再起作用了。
OP提交的错误报告:
该问题已解决(修复将于2017年1月3日提交给母版),因此在即将到来的Swift 3.1中不再是问题。
这似乎是与以下情况相关的错误(在Swift 2.2中仅存在于3.0中):
!
在表达式中使用至少3个项的强制展开运算符()(使用至少2个基本运算符(例如+
或-
)进行测试。x!
术语本身,在表达式中)。对于以下所有示例,让我们:
let a: String? = "a"
let b: String? = "b"
let c: String? = "c"
存在的错误:
// example 1
a! + b! + c!
/* error: ambiguous reference to member '+' */
// example 2
var d: String = a! + b! + c!
/* error: ambiguous reference to member '+' */
// example 3
var d: String? = a! + b! + c!
/* error: cannot convert value of type 'String'
to specified type 'String?' */
// example 4
var d: String?
d = a! + b! + c!
/* error: cannot assign value of type 'String'
to specified type 'String?' */
// example 5 (not just for type String and '+' operator)
let a: Int? = 1
let b: Int? = 2
let c: Int? = 3
var d: Int? = a! + b! + c!
/* error: cannot convert value of type 'Int'
to specified type 'Int?' */
var e: Int? = a! - b! - c! // same error
错误不存在:
/* example 1 */
var d: String? = a! + b!
/* example 2 */
let aa = a!
let bb = b!
let cc = c!
var d: String? = aa + bb + cc
var e: String = aa + bb + cc
/* example 3 */
var d: String? = String(a!) + String(b!) + String(c!)
但是,由于这是Swift 3.0- dev
,因此我不确定这是否确实是“错误”,以及不确定在尚未生产的代码版本中报告“错误”的政策是什么,但是您可能应该提起诉讼为此,以防万一。
至于如何规避此问题,请回答以下问题:
var d: String? = nil
if let a = a, b = b, c = c {
d = a + b + c
} /* if any of a, b or c are 'nil', d will remain as 'nil';
otherwise, the concenation of their unwrapped values */
我必须生成字符串命令来使用微控制器配置设备,因此需要C风格的字符串而不是常规的。 每一步都需要按enter键或是/否enter键,我需要为每一步输入一行代码。代码示例: 我可以设法减少重复LOC的数量吗?
问题内容: 我正在尝试连接Java中的字符串。为什么这不起作用? 问题答案: 你可以使用运算符来连接字符串: 被隐式转换为。
问题内容: 如何在Swift中连接字符串? 在我们喜欢 要么 但是我想用Swift语言做到这一点。 问题答案: 您可以通过多种方式连接字符串: 您也可以这样做: 我相信还有更多方法。 描述位 创建一个常数。(有点像)。设置后就无法更改其值。您仍然可以将其添加到其他东西并创建新变量。 创建一个变量。(有点像),因此您可以更改其值。 注意 在现实中,并有 很大的不同 ,从和,但它可以帮助类比。
我正在尝试用Java连接字符串。为什么这不起作用?
问题内容: 我有四个字符串,其中任何一个都可以为空。我需要将它们连接成一个字符串,并在它们之间留有空格。如果我使用: 如果为空,结果将是新字符串开头的空白。另外,如果和为空,则我有三个空格。 当我不需要空格时,如何轻松地加入它们? 问题答案: 通过在调用中使用,它将删除所有虚假元素。
问题内容: 我大量使用三元运算符,但似乎无法在内部相互堆叠多个三元运算符。 我知道堆叠多个三元运算符 会使代码的可读性降低, 但在某些情况下,我想这样做。 到目前为止,这是我尝试过的: 正确的语法是什么? 问题答案: 这些括号是我认为能带给您的。 尝试