我知道要在STDIN和STDOUT中编程,我们需要在Xcode中创建一个命令行项目。但是我如何在playroom中获取标准输入呢?每当我在操场上尝试运行这样代码时
var input = readLine()!
我总是得到这个错误执行被中断,原因:EXC_错误指令(代码=EXC_l386_INVOP,子代码=0x0)是否可以在Playground参加STDIN考试?
更新
我知道这个错误是因为nilinput变量,但我想知道如何克服这个nil值。
input
u59ebvdq1#
SWIFT 3的固定解决方案
若要让它运作,请建立新的命令列工具项目。进入“文件”-〉“新建”-〉“项目”-〉“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运行项目
CMD + R
kmynzznz2#
Playground无法从命令行读取输入。你可以使用一个自定义的“readLine()”函数和一个全局输入变量,输入数组中的每个元素都呈现一行:
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
7cwmlq893#
尝试使用Optional Chaining:
if let input = readLine() { print("Input: \(input)") } else { print("No input.") }
9vw9lbht4#
前往新建〉项目〉MacOs〉命令行工具则可以应用:字母值1:字符串?
value1 = readLine() print(value1 ?? "")
默认值为“”
vltsax255#
对于从命令行获取输入,如Console.ReadLine... Chalkers 有一个解决方案,如下所示。
func input() -> String { var keyboard = NSFileHandle.fileHandleWithStandardInput() var inputData = keyboard.availableData return NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String }
如果不行,请再问一次,Vinod.
5条答案
按热度按时间u59ebvdq1#
SWIFT 3的固定解决方案
若要让它运作,请建立新的命令列工具项目。
进入“文件”-〉“新建”-〉“项目”-〉“macOS”-〉“命令行工具”。
并使用
CMD + R
运行项目kmynzznz2#
Playground无法从命令行读取输入。
你可以使用一个自定义的“readLine()”函数和一个全局输入变量,输入数组中的每个元素都呈现一行:
7cwmlq893#
尝试使用Optional Chaining:
9vw9lbht4#
前往
新建〉项目〉MacOs〉命令行工具
则可以应用:
字母值1:字符串?
默认值为“”
vltsax255#
对于从命令行获取输入,如Console.ReadLine... Chalkers 有一个解决方案,如下所示。
如果不行,请再问一次,Vinod.