swift - 如何创建 Swift 函数(或类)并传递一些变量
问题描述
在 PHP 中,我习惯于创建这样的函数
function fun ($one,$two) { return $two; }
后来我可以在 PHP 中做
$variable1 = "something";
$variable2 = "something2";
echo fun($variable1,$variable2);
但我是 Xcode / Swift 5 的新手
我创建了一个类
class APIX {
var urlxtra: String
var deviceToken: String
init(urlxtra: String, deviceToken: String) {
self.urlxtra = urlxtra
self.deviceToken = deviceToken
let url = "https://www.api__url___.com/v1/"+deviceToken+"/"+urlxtra+"/"
let urlObj = URL(string: url)
var urlRequest = URLRequest(url: urlObj!)
urlRequest.httpMethod = "GET"
urlRequest.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
let task = URLSession.shared.dataTask(with: urlObj!)
task.resume()
}
}
并这样称呼它有效
let apicall = APIX(urlxtra: "somthing1", deviceToken: "something2")
但是当我这样做时
let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1", deviceToken: stubToken)
Xcode 说:
Cannot use instance member 'stubToken' within property initializer; property initializers run before 'self' is available
我怎样才能解决这个问题 ?
解决方案
我的猜测是你做了这样的事情:
class Something {
let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1", deviceToken: stubToken)
}
两者都是实例属性,同时初始化(不能保证它们的初始化顺序),因此一个不能依赖另一个。您需要建立一个依赖关系,以便stubToken
在apicall
.
如果stubToken
确实是一个常量,则将其设为静态:
class Something {
static let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1", deviceToken: Something.stubToken)
}
如果它是一个变量,您可以在 中初始化apicall
它,或者按照其他答案的建议init
制作第二个变量lazy
推荐阅读
- python - 在这里使用嵌套的 try-except 可接受的 Python 样式
- json - 如何提取存储为 BigQuery 中的字符串的 JSON 数组
- photoshop - 在 Photoshop 中查找和替换文本问题
- javascript - 如何在 javascript 或 lodash 中组合多个过滤器?
- nsis - 模拟下一次单击 INSTFILES 页面以将用户带到自定义页面 (NSIS)
- python - 在 heroku 中安装 PyGObject 失败
- laravel-8 - 每个页面或每个模型的 Laravel Inertia 控制器?
- sql - 绕过 SQL COLLATE
- python-3.x - Pandas 枢轴索引 level3 并随列变化
- android - Android:动画完成后如何导航到下一个屏幕