2013-04-02 3 views
3

Как я могу получить доступ к GLib.HashTable в Genie? Я пытаюсь написать метод обработчика для HTTP-сервера libsoup. Параметр запроса - это GLib.HashTable. Когда я пытаюсь получить доступ к запросу, например. сИспользование GLib.HashTable в Genie

def search_handler (server : Soup.Server, msg : Soup.Message, path : string, 
       query : GLib.HashTable?, client : Soup.ClientContext) 
response_text : string = null 
if query is not null && query.contains("expr") 
    response_text = get_search(query.get("expr")) 

я получил ошибку:

error: missing generic type arguments 
    response_text = get_search(query.get("expr")) 
           ^^^^^ 

Единственный способ, которым я нашел, чтобы сделать новый объект в hashTable:

p : GLib.HashTable of string, string = query 
expr : string = p.get("expr") 

Что такое правильный способ справиться с этим?

+2

Правильное решение в Vala использует «GLib .HashTable <строка, строка>?» (или любые правильные типы) для типа параметра. Я думаю, что способ Genie сделать это будет «GLib.HashTable? Of string, string», но когда я попробую это, я получу синтаксическую ошибку. Я не знаю, какой правильный ответ (возможно, это ошибка в Genie), но, надеюсь, это поможет вам найти его. – nemequ

ответ

1

Моя быть, вы можете попробовать: Dict строки, строки

var d = new dict of string,string 
d["one"]="1" 
d["two"]="2" 
print "%s",d["one"] 
+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/faq#reputation), вы сможете [прокомментировать любое сообщение] (http://stackoverflow.com/privileges/comment). –

1

что-то вроде этого

[отступа = 4]

init 
    var h = new HashTable of string, int (str_hash, str_equal) 
    h["foo"] = 123 
    h["bar"] = 456 

    foo ("foo", h) 


def foo (key: string, hash: HashTable of string, int) 
    // PUT HASHTABLE IN THE END 
    if hash.contains (key) 
     stdout.printf ("%s => %i", key, hash[key])