2012-05-25 44 views
3

我不知道我怎么会签我的私有函数(为例:功能onTweets(DATAS:RightType):无效)这样我就可以通过直接datas.results没有重复我以前为循环提取结果?类型转换和函数签名

private function onTweets(datas:Dynamic):Void { 
    var tweets:Array<Tweet> = new Array<Tweet>(); 
    var results:Hash<Dynamic> = datas.results; 
    for (data in results) { 
     var tweet:Tweet = new Tweet({ from_user: data.from_user , created_at : data.created_at , text : data.text }); 
     tweets.push(tweet); 
    } 
    this._datas = datas ; 
    this._tweets = tweets ; 
    this._next(tweets); 
} 

这里是我的物体看起来像在

enter image description here

的鸣叫来自$ .getJSON调用。 谢谢

+0

为(铸造(结果数据,散列))? – W55tKQbuRu28Q4xv

+0

嗨,谢谢,我试过了,但在运行时在控制台上得到了一个“类铸造错误”:(... ... – mpm

+1

+1对于Haxe/Js!:D – Waneck

回答

1

如果结果看起来像是一个数组,那么为什么要转换成哈希?

private function onTweets(datas:{ results : Array<Dynamic> }):Void { 
    var tweets:Array<Tweet> = new Array<Tweet>(); 
    for (data in datas.results) { 
     var tweet:Tweet = new Tweet({ from_user: data.from_user , created_at : data.created_at , text : data.text }); 
     tweets.push(tweet); 
    } 
    this._datas = datas ; 
    this._tweets = tweets ; 
    this._next(tweets); 
} 

这是你想要的吗?

编辑: 你甚至可以定义一个更具体的类型:

typedef TweetData = { 
    created_at: String, 
    from_user: String, 
    from_user_id: Int, 
    from_user_id_str: String 
}; 

private function onTweets(datas:{ results:Array<TweetData> }):Void