- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 Kotlin 写了一段时间,我习惯了使用下一个模式:
variable.addSomething(object: TargetType() { ...code... })
或
var variable = object: TargetType() { ...code... }
(如果我没有遗漏什么)
是否可以在 Swift 中以某种方式使用这种模式?它怎么称呼? :)
编辑:我真正想做的是 - 将预配置的 RxSwift.SingleEvent 存储在对象内部的 let/var 中,并在以后多次重用它。
在代码中,正如我想象的那样,它应该是这样的:
private var observer = SingleEvent<Response>(ok_callback, error_callback) {
override success(el: Element) {
ok_callback(el)
super.success(el)
}
override error(er: Error) {
self.onErrorRetry(er, callback)
}
}
如果在一些神奇的工作后重试 - 只需调用我的回调并返回:)
最佳答案
它似乎是尾随闭包。改编自 Swift programming language - Closures :
If you need to pass a closure expression to a function as the function’s final argument and the closure expression is long, it can be useful to write it as a trailing closure instead. A trailing closure is written after the function call’s parentheses, even though it is still an argument to the function. When you use the trailing closure syntax, you don’t write the argument label for the closure as part of the function call.
让我们编写代码:
简单地说,你所要做的就是创建一个函数,它的最后一个参数是一个闭包:
func doSomething(firstParameter: Any, closure: () -> Void) { }
因此你可以称它为:
doSomething(firstParameter: "whatever") {
// ...
}
这里没有什么特别的,如果它是函数签名中的最后一个参数,它是 Swift 语言的一个很酷的功能,可以“跟踪”闭包
参数。
在初始化的情况下,几乎是一样的:
struct MyObject {
init(firstParameter: Any, closure: () -> Void) { }
}
let variable = MyObject(firstParameter: "whatever") { }
当然,此模式之后还有许多其他语言功能,但这里是字典的 merge
方法的示例,您可以认识到如何以多种方式键入它如以下答案中所述:Map Dictionary Keys to add values - Swift .
更新:
如果您的目标是将其用作常量/变量——例如传递给函数——,您可以这样做:
let variable: (String) -> Void = { name in
print("The name is: \(name)!")
}
在这一点上,variable
类型是(String) -> Void
这意味着它是一个可以传递到其他地方的常量;考虑以下方法:
func doSomething(closure: (String) -> Void) {
closure("Nikita")
}
因为 doSomething
接受类型为 (String) -> Void
的参数,你可以这样做:
doSomething(closure: variable) // The name is: Nikita!
而不是称它为:
doSomething { name in
print("The name is: \(name)!")
}
这会阻止样板代码。
关于android - Swift 4 等效于 Kotlin "anonymous class"表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51612914/
const example = () => new Promise((resolve) => { resolve(); console.log('1'); } ) example().
我正在尝试制作一个天气应用程序,并且我正在使用天气 API 来获取信息,但是当我尝试解析 JSON 数据时出现此错误: SyntaxError: Unexpected end of JSON inpu
我尝试编写一个函数来更改文本的颜色,但出现错误。我想知道如何解决这个问题。 function change() { var colour = prompt("What's your favourite
所以我对我正在处理的这段代码有疑问。我一直在使用在下面的链接中找到的聊天功能。当我将它集成到我的应用程序中使用时,它工作得很好,尽管我在修改它时遇到了麻烦。然而,为了为我的网站创建用户历史记录功能,我
我在 JSON.parse() 中出错,我有 .php 文件,其中包含从数据库检索数据的方法和 .js 文件,用于自动完成功能,我的 .php 文件以字符串形式返回数据,我需要将其转换为使用 JSON
在java中这是有效的 new Thread(new Runnable() { public void run() { for(in
该网站如何设法将引荐来源网址清空。所有其他引用者消隐服务似乎只是隐藏引用者。然而,这成功地让谷歌分析相信用户在网站中输入了内容。 我似乎无法弄清楚他们是如何做到的。 例如:http://www.ano
我正在查看这行代码 options?: { name?: string, async?: boolean }。 { name?: string, async?: boolean } 类型的正确术语是什
以下是 Javascript 考试的练习题和答案。 我很困惑,因为我最初的 react 是选择 B。我知道 D 也是正确的,但是当我参加定时考试时,如果我发现我认为是正确的答案,有时我会停止阅读其余的
当我遍历dom ..时,我在浏览器控制台日志中收到一条错误消息null at HTMLDivElement.。HTMLDivElement. 是什么意思? 浏览器 Google Chrome浏览器 图
这个问题已经有答案了: When should I use arrow functions in ECMAScript 6? (9 个回答) 已关闭 6 年前。 我已经看到了这两种类型的代码,我想知道
我创建了一项 WCF 服务并将其部署在服务器上。当我浏览此服务时,它会通过 ?wsdl URL 给出积极响应。现在我正在尝试通过 WCF 测试客户端测试该服务。它显示了正确的元数据。但是当我尝试从服务
如何阻止匿名用户在 gerrit 中查看我的项目事件。我已经用谷歌搜索了足够多的内容,但找不到所谓的项目访问控制列表的确切文件。 最佳答案 如果你想禁止匿名用户浏览/读取/搜索某个项目的所有变更,只需
就在今天,我需要一种在不同对象之间传递函数的方法。我很快了解到,你不能直接在 Java 中执行此操作,但你可以传递一个显然称为“匿名内部类”的实例,如下所示: 定义类: interface MyCal
留言簿的PHP代码如下: prepare('INSERT INTO comments(`author`, `comment`) VALUES(:author, :comment)'); $st
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
是否可以在不知道其类名的情况下将数据表转换为 ienumerable。 我的要求是转换表格 First | Last -------------- john | mcgill clara | lin
如何使用 Anonym 函数删除事件监听器,使用 removeEventListener(); document.getElementById("object").onclick = function
我在我的 Node 服务器上运行以下 psql: SELECT json_data.key AS id, json_data.value::int AS version FROM players.se
我想使用完整日历让用户创建工作日(周一至周日,如果可能的话,还有节假日)的开放时间。 fullcalendar 已经做了什么,但它不是针对特定的一周,所以它不应该有日期。那么问题来了: 有什么想法可以
我是一名优秀的程序员,十分优秀!