[swift-users] Bls: reading keyboard input from xcode playgroud

Mr Bee pak.lebah at yahoo.com
Tue Sep 20 11:54:51 CDT 2016


I knew it's a bug, hence this email.
I need input() function to accept user input from within Playground, not from Terminal (command line). I want it on Terminal, I would have used the readLine() function which ser 
–Mr Bee
 

   

 Pada Selasa, 20 September 2016 21:13, Zhao Xin <owenzx at gmail.com> menulis:
 

 I test you code in command line `swiftc main.swift` and in macOS Command Line Tool app.
Here is the main.swift:
import Foundation
import Foundation
func input() -> String {    let keyboard  = FileHandle.standardInput    let inputData = keyboard.availableData    let strData   = String(data: inputData, encoding: .utf8)    return strData!}
func write(_ txt: String) {    print(txt, terminator: "")}
func read() -> String {    let c = CharacterSet.whitespacesAndNewlines    return input().trimmingCharacters(in: c)}
/* main program */
write("Enter your name: ")let s = read()print("You name is \(s)")
It turns out that the input request was ran before the `write("Enter your name: ")`. I don't why. Maybe it is a bug?
Here is my output in terminal:
$ swiftc main.swift $ ./main abcEnter your name: You name is abc$ 
As you can see, the program asked me to input my name before it showed the notification. In playground, the situation is alike. 
However, if the code is running as a command line tool, created by Xcode -> Create a new project -> macOS, command line tool, everything works fine.
Zhaoxin
On Sun, Sep 18, 2016 at 9:16 PM, Mr Bee via swift-users <swift-users at swift.org> wrote:

Hi all,
Another question. I used to use this snippet to read keyboard input from XCode's Playground. And it used to work very well. Today, I just updated my XCode to v.8 and Swift v.3. After a little bit modification here and there due to Swift 3 incompatibility, I got this code compiled without error. But it doesn't work. No keyboard input is taken. It just stucks.
Here's the code:
import Foundation
func input() -> String {  let keyboard  = FileHandle.standardInput  let inputData = keyboard.availableData  let encoding  = String.Encoding(rawValue: String.Encoding.utf8.rawValue)  let strData   = String(data: inputData, encoding: encoding)  return strData! as String}
func write(_ txt: String) {  print(txt, terminator: "")}
func read() -> String {  let c = CharacterSet.whitespacesAndNew lines  return input().trimmingCharacters(in: c)}

/* main program */

write("Enter your name: ")let s = read() So, does anyone know how to make it works (again)? Thank you.
Regards,
–Mr Bee

______________________________ _________________
swift-users mailing list
swift-users at swift.org
https://lists.swift.org/ mailman/listinfo/swift-users





   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160920/040e0ff4/attachment.html>


More information about the swift-users mailing list