我想知道是否有一個函式(或特殊語法)的行為類似于apply下面的假設(但對于任意f的;這里給出的只是為了舉例):
func f(a: String, b: String) -> Bool {
return a == b
}
let argDict = ["a": "foo", "b": "bar"]
apply(f, argDict) // evaluates f(a: "foo", b: "bar") and returns false
它不必為引數使用字典(也許它甚至不能使用字典?);它可以使用一些其他資料型別,甚至只是一些其他特殊語法,只要它以某種方式使您能夠打包引數,然后稍后將函式應用于它們,就好像您已經手動撰寫了引數一樣。
如果不是針對所有函式,那么對于特殊類的函式,比如帶有可變引數的函式呢?例如,如果能夠將帶有簽名的函式應用于(Double...) -> Double型別陣列,[Double]就好像我們已經行內了值一樣,那就太好了。
如果它還沒有作為內置存在,它可以被構建嗎?
(另外,我不打算重新定義f;如果您愿意,我認為您可以通過重新定義它f1(dict: [String: String]) -> Bool { ... },然后在正文中使用dict["a"]anddict["b"]代替aand b。但是我問這個問題是因為我很好奇這里的語言能力,不是因為我試圖解決一個特定的問題。)
uj5u.com熱心網友回復:
斯威夫特曾經有過。您可以傳遞引數的元組而不是直接傳遞引數,這正是您所描述的(強型別引數包)。它被稱為“tuple splat”。它在 Swift 3 中被移除。請參閱SE了解背景以及移除原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/440334.html
上一篇:狀態變數更改導致無限渲染回圈
