Moduły Perla autodie i Fatal wydają się robić podobne rzeczy. Jakie są powody używania jednego względem drugiego?Jaka jest różnica między modułami Perl autodie i Fatal?
Odpowiedz
Moduł Fatal został dodany do rdzenia Perla w wersji 5.05 (1998). Moduł Fatal ma pewne istotne niedociągnięcia i niespójności w swoim API, które nie mogły zostać naprawione w sposób kompatybilny wstecz (tj. Naprawienie interfejsu API zepsułoby istniejący kod, który używał Fatala).
Nowszy moduł autodie został napisany, aby zapewnić bardziej spójny interfejs API i pozwolić, aby efekt pragmy był leksykalny, a nie globalny (co może mieć nieoczekiwane efekty uboczne).
Jeśli masz wybór, zdecydowanie powinieneś preferować autodie. Zostanie uwzględniony jako podstawowy moduł w nadchodzącym wydaniu Perl 5.12.
Moduł autodie wymaga Perla 5.8. Jedynym powodem, dla którego używałbyś Fatala, byłeś, gdybyś utknął z naprawdę starą wersją Perla (np. 5.6), ale 5,8 został wydany od 2002 roku, więc mam nadzieję, że tak nie będzie w twoim przypadku.
Cytując dokumentację Fatal
krytyczny został zastąpiony przez nowy autodie Pragma. Użyj autodie zamiast opcji Fatal. autodie obsługuje zakresy leksykalne, generuje prawdziwe obiekty wyjątku i zapewnia znacznie ładniejsze komunikaty o błędach.
Innym powodem korzystania autodie zamiast Fatal jest, aby uniknąć tego błędu (od sekcji BUGS z Fatal docs):
Fatal clobbers kontekstu, w którym funkcja jest wywoływana i zawsze sprawia, it kontekst skalarny, z wyjątkiem sytuacji, gdy używany jest znacznik pustki : void. Ten problem nie występuje w autodie w postaci .
Artykuł Paula Fenwicka autodie - The art of Klingon Programming rozpoczyna się od wyjaśnienia niektórych niedociągnięć Fatala.
- 1. Jaka jest różnica między modułami Unittest i unittest2 w Pythonie?
- 2. Różnica między $ @ i $! w perl
- 3. Perl Tkx, Jaka jest różnica między "button" i "ttk__button"?
- 4. Różnica między modułami i rozszerzeniem w Yii
- 5. Jaka jest różnica między? : i ||
- 6. Jaka jest różnica między $ i $$?
- 7. Jaka jest różnica między BrowserAnimationsModule i NoopAnimationsModule?
- 8. Różnica między INCLUDE i modułami w Fortranie
- 9. różnica między ./test.pl i Perl test.pl
- 10. Jaka jest różnica między base64 i MIME base 64?
- 11. Jaka jest różnica między Subtotal i BaseSubtotal?
- 12. Jaka jest różnica między DetachedCriteria i ICriteria
- 13. Jaka jest różnica między & # x00A0; i ?
- 14. Jaka jest różnica między lex i yacc
- 15. jaka jest różnica między dijit i dojo
- 16. Jaka jest różnica między Control.Select() i Control.Focus()?
- 17. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 18. Jaka jest różnica między apletami i SWING?
- 19. Jaka jest różnica między session.commit() i session.flush()?
- 20. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 21. Jaka jest różnica między Konwertuj i parsuj?
- 22. Jaka jest różnica między JSP i JSTL?
- 23. Jaka jest różnica między Lazarus i CodeTyphon
- 24. Jaka jest różnica między crc32 i crc32b?
- 25. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 26. jaka jest różnica między ARM7 i ARM7s
- 27. Jaka jest różnica między http_build_str() i http_build_query()?
- 28. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 29. Jaka jest różnica między mock.patch.object (... i mock.patch (
- 30. Jaka jest różnica między GetBlobReference i GetBlobReferenceFromServer?
@grant - bardzo pomocne wyjaśnienie – justintime