2015-10-02 3 views
2

Я пытаюсь создать простую программу Hello World, используя Genie, но я хотел иметь возможность вводить некоторые данные на терминале. Моя цель - повторить следующий код python в Genie:Эквивалент raw_input() в Genie/vala?

#!/usr/bin/env python 
print 'Hello. I am a python program.' 
name = raw_input("What is your name? ") 
print "Hello there, " + name + "!" 

До сих пор, что я делал;

[indent=4] 

uses System 

init 
    print "Hello. I am a python program." 
    var name = Console.ReadLine("What is your name? ") 
    print "Hello there, " + name + "!" 

Но я получаю некоторые ошибки, вероятно, потому, что я не имею ни малейшего представления о языке, здесь ошибка:

hw.gs:4.5-4.10: error: The namespace name `System' could not be found 
    System 
    ^^^^^^ 
Compilation failed: 1 error(s), 0 warning(s) 
hw.gs:3.6-3.11: error: The namespace name `System' could not be found 
uses System 
    ^^^^^^ 
Compilation failed: 1 error(s), 0 warning(s) 

Что я делаю неправильно?

Спасибо.

+0

Привет Луис, в Vala это довольно легко - строка ввода = stdin.read_line(); – tinySandy

+0

Спасибо, что на самом деле решает проблему. Я создам ответ ... –

+0

добро пожаловать – tinySandy

ответ

1

BigOldTree помог мне с предложением, которое действительно сработало. Вот как выглядит код в Geanie:

[indent=4] 
init 
    print "Hello. I am a python program." 
    print "What's your name?" 
    var name = stdin.read_line() 
    print "Hello there, " + name + "!" 

Я не знаю, можно ли послать аргументы stdin.read_line(), как можно с raw_input() в Python. Было бы хорошо знать это, также я не знаю, как найти информацию о конкретных функциях и о том, как их импортировать. Я родом из R, и там я могу использовать функцию function(), которая дала бы мне небольшую инструкцию об этом. Есть ли что-то подобное в Genie/Vala?

+0

Поскольку Вала разделяет библиотечную инфраструктуру с Genie http://valadoc.org/, у вас есть много методов, которые вы можете использовать :) –

+0

Вы читали введение? https://wiki.gnome.org/Projects/Genie –

+0

'stdin' является' GLib.FileStream', поэтому вы используете http://valadoc.org/#!api=glib-2.0/GLib.FileStream.read_line, который не принимает никаких аргументов. –

1

Вы можете написать свой собственный raw_input функцию, если вы хотите:

[indent=4] 

def raw_input (query : string? = null) : string? 
    if (query != null) 
     stdout.printf ("%s\n", query) 
    return stdin.read_line() 

init 
    print "Hello. I am a python program." 
    var name = raw_input ("What's your name?") 
    print "Hello there, " + name + "!"