所以我在Swift开始了一个项目,我遇到了这个问题:
这段代码有效:
var dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"]
println(dictionary)
dictionary["c"] = "newValOfC"
println(dictionary)
Run Code Online (Sandbox Code Playgroud)
这不是:
var dictionary = [:]
dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"]
println(dictionary)
dictionary["c"] = "newValOfC"
println(dictionary)
Run Code Online (Sandbox Code Playgroud)
给出错误:
Playground execution failed: error: <REPL>:35:17: error: cannot assign to the result of this expression
dictionary["c"] = "newValC"
~~~~~~~~~~~~~~~ ^
Run Code Online (Sandbox Code Playgroud)
请注意,这不是常量值
那么为什么不行
dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"]
Run Code Online (Sandbox Code Playgroud)
给出错误?
Jia*_*aro 11
由于上下文没有提供足够的信息来推断类型,你需要明确地将它命名为字典,否则swift假定它是一个NSDictionary
(我不清楚为什么会这样.我假设为了更好的obj-c兼容性) :
以下代码均有效:
// Playground
import UIKit
var str:NSString = "Hello, playground"
var d0 = [:]
var d1: Dictionary = [:]
d0.setValue(UIWebView(), forKey: "asdf")
d1["asdf"] = 1
d1["qwer"] = "qwer"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6697 次 |
最近记录: |