如何在斯威夫特操场采取STDIN
我知道要在STDIN和STDOUT中编程,我们需要在Xcode中创build一个命令行项目。 但是我如何在操场上进行标准input。
每当我尝试在操场上运行这样的代码
var input = readLine()!
我总是得到这个错误
执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_l386_INVOP,子代码= 0x0)
是否可以在运动场玩STDIN?
UPDATE
我知道这个错误是因为没有 input
variables,但想知道如何克服这个零值。
尝试使用可选链接 :
if let input = readLine() { print("Input: \(input)") } else { print("No input.") }
为了从命令行获得input,像Console.ReadLine … Chalkers有一个解决scheme如下。
func input() -> String { var keyboard = NSFileHandle.fileHandleWithStandardInput() var inputData = keyboard.availableData return NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String }
请进一步询问是否不起作用Vinod。
针对SWIFT 3的固定解决scheme
为了使它工作,创build一个新的命令行工具项目。
进入“文件” – >“新build” – >“项目” – >“macOS” – >“命令行工具”。
import Foundation print("Hello, World!") func solveMefirst(firstNo: Int , secondNo: Int) -> Int { return firstNo + secondNo } func input() -> String { let keyboard = FileHandle.standardInput let inputData = keyboard.availableData return NSString(data: inputData, encoding:String.Encoding.utf8.rawValue) as! String } let num1 = readLine() let num2 = readLine() var IntNum1 = Int(num1!) var IntNum2 = Int(num2!) print("Addition of numbers is : \(solveMefirst(firstNo: IntNum1!, secondNo: IntNum2!))")
并使用CMD + R
运行该项目
去
新build>项目> MacOs>命令行工具
那么你可以申请:
让value1:string?
value1 = readLine() print(value ?? "")
“”为默认值
游乐场不能读取来自表扬线的input。
您可以使用自定义的“readLine()”函数和全局inputvariables,input数组中的每个元素都呈现一行:
import Foundation var currentLine = 0 let input = ["5", "5 6 3"] func readLine() -> String? { if currentLine < input.endIndex { let line = input[currentLine] currentLine += 1 return line } else { return nil } } let firstLine = readLine() // 5 let secondLine = readLine() // 5 6 3 let thirdLine = readLine() // nil