Swift3.0 控制檯輸入輸出
阿新 • • 發佈:2018-12-25
一個基本事實,scanf是在stdio.h裡面的,這是一個標準的c函式。
這已經和objective-c沒有什麼關係了,其實objc裡面也沒有scanf這個函式。唯一不同的只是objc比swift更容易和c結合。
swift從誕生開始的形象就是“去c化”,objc一直沾染著c,而又離現代程式語言太遠。
其實我從來沒有在Cocoa的環境下用過這個函式。 Cocoa的定位(Swift和oc一樣也是純粹為Cocoa服務的)是讓你寫GUI,也就是圖形使用者介面。
上面說的都是語言層面的問題,我認為這個問題其實是不存在的。下面是解決方案
1、使用NSFileHandle的fileHandleWithStandardInput
這個是完全和objc一模一樣的用法
2、寫一個bridging header
其實在swift裡面用c也不是那麼的困難,你只需要一個.h
最後附上一段控制檯輸入的程式碼,用Swift3.0寫的
這已經和objective-c沒有什麼關係了,其實objc裡面也沒有scanf這個函式。唯一不同的只是objc比swift更容易和c結合。
swift從誕生開始的形象就是“去c化”,objc一直沾染著c,而又離現代程式語言太遠。
其實我從來沒有在Cocoa的環境下用過這個函式。 Cocoa的定位(Swift和oc一樣也是純粹為Cocoa服務的)是讓你寫GUI,也就是圖形使用者介面。
上面說的都是語言層面的問題,我認為這個問題其實是不存在的。下面是解決方案
1、使用NSFileHandle的fileHandleWithStandardInput
這個是完全和objc一模一樣的用法
2、寫一個bridging header
其實在swift裡面用c也不是那麼的困難,你只需要一個.h
let input = String(data: FileHandle.standardInput.availableData, encoding: String.Encoding.utf8)
if let str = input {
let index = str.index(str.endIndex, offsetBy: -1) //去掉最後一個換行符
print(str.substring(to: index))
}