亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3280 | 回復(fù): 8
打印 上一主題 下一主題

Yaml tag 怎么用 perl [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-10-17 09:57 |只看該作者 |倒序?yàn)g覽
本帖最后由 luyi1983 于 2015-10-18 19:05 編輯

請(qǐng)教大家YAML 在perl中使用的問(wèn)題:
主要是想可以調(diào)用自己定義的類型或者對(duì)象

1>
我希望key的value是一個(gè)引用。
比如 cb是個(gè)匿名call back函數(shù)。
那么當(dāng)我用CB對(duì)應(yīng)的值的時(shí)候就可以 &{$hashref->{CB}}() 調(diào)用匿名函數(shù)

my $cb = sub{...}
my ($hashref) = Load(<<'END_YAML');
CB: !!perl/ref
:= \$cb
END_YAML

2>
看到pyyaml中有個(gè)很好的功能,比如定義一個(gè)自己的class
然后,

    ao = yaml.load("""
    !!python/object:__main__.UserClass
    name: Foo
    hp: 1200
    """

可以直接調(diào)用UserClass中的方法:
ao.method(name,hp)

perl中有現(xiàn)成的實(shí)現(xiàn)嗎?Yaml:erl?試了下好像不可以。。。

謝謝大家先

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
2 [報(bào)告]
發(fā)表于 2015-10-18 21:29 |只看該作者
看不懂代碼,你還是禁用表情吧。用代碼格式插入代碼:
  1. my $cb = sub{...}
  2. my ($hashref) = Load(<<'END_YAML');
  3. CB: !!perl/ref
  4. := \$cb
  5. END_YAML
復(fù)制代碼

  1.     ao = yaml.load("""
  2.     !!python/object:__main__.UserClass
  3.     name: Foo
  4.     hp: 1200
  5.     """
復(fù)制代碼
  1. ao.method(name,hp)
復(fù)制代碼

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
3 [報(bào)告]
發(fā)表于 2015-10-18 21:38 |只看該作者
Perl 內(nèi)置的并沒有對(duì)象的概念,是由 bless 過(guò)的引用才引發(fā)了對(duì)象的實(shí)現(xiàn)。在 Perl 中,內(nèi)置的數(shù)據(jù)類型只有 Scalar, Array, Hash, Regex ... Perl5 中對(duì)對(duì)象的實(shí)現(xiàn)有很多種。

YAML 在 Perl 中沒有實(shí)現(xiàn)對(duì)函數(shù)的引用的字面量表示。YAML 無(wú)法表示對(duì)別的數(shù)據(jù)的引用,這樣會(huì)失去 YAML 數(shù)據(jù)文件的獨(dú)立性。

Python 的 YAML 實(shí)現(xiàn)有很多獨(dú)特的特性。

你可以把你想象中 Perl 應(yīng)當(dāng)?shù)男袨檎f(shuō)出來(lái)

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2015-10-19 10:51 |只看該作者
謝謝樓上,
http://search.cpan.org/~ingy/YAML-1.15/lib/YAML.pod

YAML.pm also has the ability to handle code (subroutine) references and typeglobs.

我想做的事情是:
  1. YAML 格式是:
  2. Key: \$ref_sub;
  3. 而ref_sub是一個(gè)匿名函數(shù)的引用。
  4. 當(dāng)我調(diào)用YAML中的這個(gè)Key的value時(shí),我能以匿名函數(shù)的方式call它即&{$ref_sub}(arguments);
復(fù)制代碼

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
5 [報(bào)告]
發(fā)表于 2015-10-21 01:41 |只看該作者
如果沒有函數(shù)的表達(dá)式的字面量表示的話,YAML 即使有表示函數(shù)引用的表示方法,也沒有任何意義。這樣的 YAML 無(wú)法重新加載這個(gè)函數(shù)的引用, 就好像把當(dāng)前數(shù)據(jù)的變量名稱保存起來(lái),下次加載后,如果在同一個(gè)程序中,同樣的進(jìn)程中,這個(gè)變量沒有被回收的情況下,才不會(huì)出錯(cuò),在這種情況下,有必要把數(shù)據(jù)保存起來(lái)然后加載嗎?

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2015-10-30 13:12 |只看該作者
回復(fù) 5# 104359176


    config file的setting要real-time dynamically call back的時(shí)候。
    比如 exec_system: \$sub_ref
     然后在程序run-time的時(shí)候可以以不同的參數(shù)調(diào)用這個(gè)anomynous sub來(lái)實(shí)現(xiàn)call back。

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
7 [報(bào)告]
發(fā)表于 2015-10-30 21:12 |只看該作者
回復(fù) 6# luyi1983


    你說(shuō)的是不是把函數(shù)保存起來(lái),下次動(dòng)態(tài)的調(diào)用?
  1. my $call = sub { call() }
復(fù)制代碼

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2015-10-30 22:20 |只看該作者
回復(fù) 7# 104359176


    是

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
9 [報(bào)告]
發(fā)表于 2015-11-01 02:57 |只看該作者
本帖最后由 104359176 于 2015-11-01 03:03 編輯

不管是 YAML, JSON 還是內(nèi)置的 Dumper 都不能保存函數(shù)。除了用內(nèi)置的 B::Deparse 模塊,可以將代碼編譯成二進(jìn)制,然后動(dòng)態(tài)加載。

http://perldoc.perl.org/B/Deparse.html

雖然許多語(yǔ)言可以把函數(shù)當(dāng)成 first class 類型來(lái)動(dòng)態(tài)的加載,但支持序列化 function 的語(yǔ)言卻很少。只有 Lisp 及其方言才支持。

其實(shí)許多需求是交換算法,而不是單單交換數(shù)據(jù)。我正在寫一門語(yǔ)言,用于各種語(yǔ)言之間算法的交換。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP