2017-07-20 97 views
5

dd例程是一個Rakudo特有的功能,但這是我的問題所附帶的。在程序中有沒有辦法檢查執行情況,並且如果它不是正確的,那麼可以進行保護?我必須自己做這個嗎?我可以限制我的Perl 6程序在特定實現下運行嗎?

die "Unsupported VM" unless $*VM ~~ m/^ 'moar' /; 

也許我們需要類似Perl 5的Devel::AssertOS。我可以想象一個實現具有特定的怪癖和錯誤,與程序不兼容的情況下,我對創建實現特定的程序並不感興趣。因爲,你知道,那是幾年來的Java(請記住MRJ?)。

+0

從理論上講,如果你遵守標準,你就不會需要這個。爲什麼標準在不需要的時候提供? – Sylwester

+0

@Sylwester你指的是哪個標準? –

+0

@SinanÜnür在Perl5中,如果文檔與官方實現不同,那麼文檔需要修復。你需要閱讀perl5的規範源代碼。 perl6有一個規範。 Perl 6是任何通過官方測試套件的東西。因此,如果這不做'dd',那麼'dd'不是該語言的一部分。使用'dd'會使程序失效,而不是使用perl6。你可以稱它爲一個rakudo程序,但不是perl6。 – Sylwester

回答

6

如果你想只在MoarVM運行您的程序,然後:

die "Must run on MoarVM, not $*VM.name()" unless $*VM.name eq 'moar'; 

應該夠了。

+1

並在它之前粘貼一個'BEGIN',以便在編譯時檢測到它。 –

+0

還有[RakudoPrereq](http://modules.perl6.org/dist/RakudoPrereq)模塊可用於鎖定rakudo編譯器的特定版本。 –

相關問題