如果您始终需要有序关闭程序所使用的外部资源(例如数据库句柄),则可以使用位相器确保以正确和及时的方式释放外部资源。
例如,可以使用END相位器(称为END块(在Perl 5中),以便在程序退出时(无论出于何种原因)正确断开与数据库的连接:
DBIishconnect "Couldn't connect" END disconnect
注意,END相位器不需要有块(如{ ... })在Perl 6中。如果没有,则相位器中的代码与周围的代码共享词法块(Lexpad)。
上面的代码有一个缺陷:如果程序退出以前数据库连接已经建立,或者如果数据库连接由于任何原因而失败,它将仍然尝试调用.disconnect方法中的任何内容。$dbh,这将导致执行错误。那里是然而,在perl 6中有一个简单的成语可以避免这种情况。用与.
END disconnect with
后缀with只有在定义给定值(通常是实例化对象)并将其主题化为$_。.disconnect是缩写$_.disconnect.
如果您希望随时清理外部资源,那么范围退出,您可以使用LEAVE范围内的相位。
DBIishconnect -> LEAVE disconnect # no need for `with` here # do your stuff with the database say "Could not do the stuff that needed to be done"
作用域if是左边的,任何LEAVE相位器将被执行。因此,每当代码在该范围内运行时,数据库资源将被释放。
摘要
尽管perl 6没有及时销毁perl 5用户习惯的对象,但是是吗?具有易于使用的替代方法,以确保外部资源的管理,类似于Perl 5中的方法。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对易采站长站的支持。如果你想了解更多相关内容请查看下面相关链接









