考虑这两个代码:
if let myValue = myObject.value as NSString?{
//logic here
}
Run Code Online (Sandbox Code Playgroud)
VS
if var myValue = myObject.value as NSString?{
//logic here
}
Run Code Online (Sandbox Code Playgroud)
我知道let关键字是定义一个常量,这是否意味着第一行代码,如果myObject.value是NSString,myValue则会产生常量?这看起来令人困惑.
我经常碰到“线程安全”这两个关键术语,想知道这意味着什么。例如,在Firebase或Realm中,某些对象被视为“线程安全”。线程安全的东西到底意味着什么?
这是我的理解
var perhapsInt : Int?
Run Code Online (Sandbox Code Playgroud)
这会自动设置为一个.None值.以下代码片段确认(没有编译器错误)
class MyClass {
var num1: Int = 0
var num2: Int?
init(num1: Int) {
self.num1 = num1
}
}
var newClass = MyClass(num1: 5)
newClass.num1 // prints '5'
newClass.num2 // prints 'nil'
Run Code Online (Sandbox Code Playgroud)
我对可选的初始化过程的理解是否正确?如果是这样,为什么当我换num2到时这不起作用let.
我期待nil使用时可选项默认的相同行为let.我在这里错过了什么吗?
class MyClass {
var num1: Int = 0
let num2: Int?
init(num1: Int) {
self.num1 = num1
// compiler error : return from initialiser without initialising all stored properties
} …Run Code Online (Sandbox Code Playgroud) 我是新来的斯威夫特编程,和我见过的var和let类型.我知道这let是一个常数,我知道这意味着什么,但我从来没有使用常数,主要是因为我不需要.那么为什么我应该使用var而不是let,在什么情况下我应该使用它?
如何更改枚举的特定关联值
enum Origin {
case search(searchTerm: String, filtered: Bool)
case category(categoryName:String, subcategoryName:String)
}
@objc class GameSession: NSObject
{
var gameOrigin: Origin?
...
@objc func setIsSearchFiltered(filtered:Bool)
{
if (<gameOrigin is of type .search?>)
{
self.gameOrigin = <change "filtered" associated value to new value>
}
}
....
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个问题的答案最近对我没有帮助。
在苹果网站上,https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html 它声明我们可以更改结构中的变量属性.我想改变这个人的姓氏.但是我在那行代码中收到错误.感谢你们对我的帮助.
import UIKit
struct people {
let firstName : String
var lastName : String
}
let person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //<-- error
println(person.firstName)
println(person.lastName)
Run Code Online (Sandbox Code Playgroud)
错误:
游乐场执行失败:TestPlayground2.playground:12:17:错误:无法分配给'人'中的'lastName'person.lastName ="ChangedLastName"~~~~~~~~~~~~~~~~ ^
从几个初始教程中,我看到属性属于一个类,并且基本上是C++世界中使用的"全局变量"(在此前编码).我还将变量看作更多只在方法中使用/存储信息的"本地"实体.
然后我遇到了这个Quora线程:https://www.quora.com/Apple-Swift-programming-language/What-is-the-difference-between-a-property-and-a-variable 现在我看到属性正在能够执行与其调用相关的代码.这很酷,但也为我打开了一大堆其他问题.
还有其他简单明了的方法来记住属性和变量之间的区别吗?
我是 Swift 的新手并且遇到了问题。
当我optional let在课堂内使用时,它给出了错误“Class className has no initializers ”。
但是当我使用编写相同的代码时 optional var,它没有显示任何错误。
例如:
以下代码给了我错误:Class className has no initializers
class className: UIViewController
{
let nearbyPlaceRadius : Int?
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码没有给我任何错误。
class className: UIViewController
{
var nearbyPlaceRadius : Int?
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
Run Code Online (Sandbox Code Playgroud) 例如:
var dogName : String {
return "Buster"
}
Run Code Online (Sandbox Code Playgroud)
VS ..
let dogName = "Buster"
Run Code Online (Sandbox Code Playgroud)
假设我们在类的顶层将这些中的每一个声明为实例属性.这些只是做同样事情的两种方式吗?如果没有,那么拥有只读变量有什么意义呢?
谢谢
正如Apple文档所说:
使用
let做一个常数,var使一个变量.在编译时不需要知道常量的值,但是必须为其分配一次值.这意味着您可以使用常量来命名您确定一次但在许多地方使用的值.
让我们考虑一下课程:
class A {
var a = [String]()
}
Run Code Online (Sandbox Code Playgroud)
由于数组a是可变的,因此它是通过定义的var.但是如果我们考虑B类,A的实例是属性呢?
class B {
let b = A()
}
Run Code Online (Sandbox Code Playgroud)
即使b是可变的,let关键字也可以,因为引用不会被更改.另一方面,var也可以,因为内容b可以改变.我应该在这个例子中选择什么 - let或者var?
众所周知,JavaScript"将"变量"提升"到文件或范围的顶部.但根据我的理解,使用let是相同的,var只是let局限于它所定义的范围.
作为一种编译语言而不是解释,我们可以假设Swift不这样做吗?
例如:
x = 10
var y = x + 10
var x
Run Code Online (Sandbox Code Playgroud) 我正在 Swift 中学习数组,在我的书中他们首先写道:
let numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
但是然后写:
var numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我知道这let表示常量并var指代变量,但实际上声明为常量的数组和声明为变量的数组有何不同?
我刚开始学习新的Swift语言,我们如何区分,比如何时使用"Let"和"Var".正如我对Java脚本的理解,我知道你想要定义"Var".如何"让"是不同于"无功".
任何帮助,将不胜感激.