2017-05-28 82 views
0

此程序無法通過Xcode進行編譯,只能在IOS應用程序「Playgrounds」中運行。無法使用類型爲'(Number)'的參數列表調用類型爲'Int'的初始值設定項。

在IOS應用 「遊樂場」 - > 「學習代碼3」(SWIFT 3.1) - > 「音樂宇宙」 我有下面的代碼:

// A touch event for when your finger is moving across the scene. 

// Declaration 
struct Touch 

// The position of this touch on the scene. 

// Declaration 
var position: Point 

// The x coordinate for the point. 

// Declaration for touch.position.x 
var x: Double 

以上只是爲了說明。

let touch: Touch 
let numberOfNotes = 16 
let normalizedXPosition = (touch.position.x + 500)/1000 
let note = normalizedXPosition * (numberOfNotes - 1) 
let index = Int(note) 

最後一句顯示錯誤: 不能調用初始化類型「詮釋」類型的參數列表「(編號)」。 我怎麼能轉換noteInt類型?

+1

什麼類型都有'touch.position.x'? - 一個顯示問題的自包含*示例將有所幫助。 –

+0

對於第一次看,我認爲'touch.position.x'類型爲CGFloat的,但現在看來,這是不是因爲你應該得到'讓注= normalizedXPosition *(numberOfNotes - 1)編譯時錯誤',抱怨關於Int和CGFloat之間的乘積。 –

+0

我已添加touch.position.x的註釋,touch.position.x類型爲'Double' – linjie

回答

1

這是在iPad上運行Swift Playgrounds

他們顯然在幕後創建了 Number以緩解Swift類型轉換的痛苦。在這種小型的程序,它是能夠繁殖的IntDouble而不首先轉換IntDouble

let a = 5  // a is an Int 
let b = 6.3 // b is a Double 
let c = a * b // This results in c being type Number 

Number具有隻讀屬性intdouble該返回數的IntDouble表示。

var int: Int { get } 
var double: Double { get } 

所以,如果你需要index是一個Int,像這樣做:

let index = note.int 
相關問題