Comment prendre STDIN dans le terrain de jeu Swift

Je sais que pour programmer en STDIN et STDOUT, nous devons faire un projet en command line dans Xcode. Mais comment puis-je prendre une input standard dans le terrain de jeu.

Chaque fois que j'essaie d'exécuter un tel code dans le terrain de jeu

var input = readLine()! 

J'ai toujours cette erreur

L'exécution a été interrompue, raison: EXC_BAD_INSTRUCTION (Code = EXC_l386_INVOP, sous-code = 0x0)

Est-il possible de prendre STDIN dans la cour de récréation ou non?

METTRE À JOUR

Je sais que cette erreur est due à input variable d' input nulle , mais je veux savoir comment surmonter cette valeur nulle.

Essayez d'utiliser le chaînage en option :

 if let input = readLine() { print("Input: \(input)") } else { print("No input.") } 

Pour get des inputs à partir de la command line, comme Console.ReadLine … Chalkers a une solution comme suit.

 func input() -> Ssortingng { var keyboard = NSFileHandle.fileHandleWithStandardInput() var inputData = keyboard.availableData return NSSsortingng(data: inputData, encoding:NSUTF8SsortingngEncoding) as! Ssortingng } 

s'il vous plaît requestr plus loin si cela ne fonctionne pas Vinod.

Solution fixe pour SWIFT 3

Pour le faire fonctionner, créez un nouveau projet d'outil de command line.

Allez dans "Fichier" -> "Nouveau" -> "Projet" -> "macOS" -> "devise de command line".

 import Foundation print("Hello, World!") func solveMefirst(firstNo: Int , secondNo: Int) -> Int { return firstNo + secondNo } func input() -> Ssortingng { let keyboard = FileHandle.standardInput let inputData = keyboard.availableData return NSSsortingng(data: inputData, encoding:Ssortingng.Encoding.utf8.rawValue) as! Ssortingng } let num1 = readLine() let num2 = readLine() var IntNum1 = Int(num1!) var IntNum2 = Int(num2!) print("Addition of numbers is : \(solveMefirst(firstNo: IntNum1!, secondNo: IntNum2!))") 

Et exécutez le projet en utilisant CMD + R

Aller à

Nouveau> Projet> MacOs> devise de command line

alors vous pouvez appliquer:

let value1: Chaîne?

 value1 = readLine() print(value ?? "") 

"" pour la valeur par défaut

Playground ne peut pas lire une input de la ligne d'élocution.

Vous pouvez utiliser une fonction "readLine ()" personnalisée et une variable d'input globale, chaque élément du tableau d'input présente une ligne:

 import Foundation var currentLine = 0 let input = ["5", "5 6 3"] func readLine() -> Ssortingng? { 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