code.club

 找回密碼
 立即註冊
搜索
查看: 899|回復: 1

有關函數變數的問題

[複製鏈接]
發表於 2015-5-27 22:46:15 | 顯示全部樓層 |閱讀模式
看書上說函數也有型別,因此其回傳值可以給另一變數。但之前該變數要有如 var x: (String,Int) -> String 這樣符合原函數模式的宣告。但我做了如下的寫法,似乎可以直接把函數賦值給變數,而無需事先宣告?

func test(name:String, age:Int) ->String {
return "\(name) is \(age) years old."
}

var x = test
x("Tom", 22)

var y: (String, Int) ->String
y = test
y("Tom", 22)


書上說「將buyBook2宣告為function型別後,接著再指派同樣型別的buyBook給它,如此呼叫 buyBook2 時執行的其實就是 buyBook 裡定義的程式碼。」



上圖是照著書上的範例打的,但少了一條代碼 var buyBook2: (String, Int) ->String
結果執行的結果是一樣的?

這個問題主要是在看下一段的「回傳 function 的 function 」中的範例 圖 7-40 中的倒數第二行, var todayFeeling = feeling(mode: 3) ,發現這個 todayFeeling 並未經過類似 todayFeeling : (String) ->String之類的宣告?
回復

使用道具 舉報

 樓主| 發表於 2015-5-28 01:24:26 | 顯示全部樓層
根據原書「Swift程式設計入門」作者 peterpan 的意見,他認為乾脆就不需要先替變數宣告型別了,因為「Swift有自動推理型別的能力,所以當你沒有特別指定型別的,它會從你指派的內容推理出型別」 ,所以除非有必要,不然少打點字反而減少出錯的機會。

感謝專家的意見。
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2017-10-22 01:43 , Processed in 0.035631 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表