您好、欢迎来到现金彩票网!
当前位置:21点 > 子例程 >

perl6intro 翻译

发布时间:2019-06-27 05:03 来源:未知 编辑:admin

  这个高阶函数并传递给它两个参数, 一个子例程和一个数组。结果是所有数组元素的平方组成的列表。

  我们没有声明子例程并把它作为参数传递给map, 而是在里面直接定义了匿名函数。

  在 Perl 6中, 方法可以链接起来, 你不再需要把一个方法的结果作为参数传递给另外一个方法了。

  我们假设你有一个数组。你被要求返回该数组的唯一值, 并且按从大到小的顺序排序。

  首先我们在@array身上调用unique函数, 然后我们把它的结果作为参数传递给sort函数, 再然后我们把结果传递给reverse函数。

  feed 操作符, 在有些函数式编程语言中也叫管道, 然而它是链式方法的一个更好的可视化产出。

  hyper 操作符».会在列表的所有元素身上调用一个方法并返回所有结果的一个列表。

  使用 hyper 操作符我们能调用 Perl 6 中已经定义过的方法, 例如.is-prime告诉我们一个数字是否是质数。

  此外我们能定义新的子例程并使用 hyper 操作符调用它们。但是这时我们必须在方法的名字前面加上&符号。例如.&is-even。

  junctions 的使用常常触发自动线程化; 每个 junction 元素都执行该操作, 并且所有的结果被组合到一个新的 junction 中并返回。

  惰性求值延迟表达式的计算直到需要时, 并把结果存储到查询表中以避免重复计算。

  初始元素为 1 而结束点为 10。因为没有定义发生器所以默认的发生器为 successor(+1)。换句话说, 这个惰性列表可能返回(如果需要的线)。

  该列表可能返回(如果需要的线 到无穷大之间的任何整数, 换句话说, 可以返回任何整数。

  初始的元素是 0 和 2 而结束点是 10。虽然没有定义发生器, 但是使用了初始元素, Perl 6 会把生成器推断为 (+2)。

  如果在上面的例子中我们使用的结束点是 10 而非 12, 那么发生器就不会停止。发生器会跳过那个结束点。

  在上一章中我们学习了 Perl 6 中函数式编程的便利性。在这一章中我们将看看 Perl 6 中的面向对象编程。

  面向对象编程是当今广泛使用的范式之一。对象是一组绑定在一起的变量和子例程。

  其中的变量叫做属性, 而子例程被叫做方法。属性定义对象的状态, 而方法定义对象的行为。

  sayvar是一个存取器。它让我们通过不直接访问这个变量来访问这个变量。

  默认地, 所有的属性都是私有的, 但是总是用!twigil 是一个好习惯。

  原因是$!age是私有的并且只能用于对象内部。 尝试在对象外部访问它会返回一个错误。

  如果你考虑到上面的例子, 你会看到所有提供给.new方法的参数都是按名字定义的:

  像子例程一样, 方法是一种打包一组功能的手段, 它们接收参数, 拥有签名并可以被定义为multi。

  正常情况下, 方法被要求在对象的属性身上执行一些动作。这强制了封装的概念。对象的属性只能在对象里面使用方法来操作。在对象外面, 只能和对象的方法交互, 并且不能访问它的属性。

  在方法的定义中, 如果我们需要引用对象本身以调用另一个方法, 则使用self关键字。

  在方法的定义中, 如果我们需要引用属性, 则使用!, 即使属性是使用.定义的。

  一个可能的使用情况是一个方法调用另外一个执行特定动作的方法。连接外部世界的方法是公共的而被引用的那个方法应该保持私有。我们不想让用户直接调用它, 所以我们把它声明为私有的。

  默认地, 所有属性都声明为只读, 但是你可以显式地使用is readonly来声明。

  combo-chart类应该能持有两个序列, 一个是绘制条形图的实际值, 另一个是绘制折线图的预测值。

  这就是我们为什么把它定义为line-chart和bar-chart的孩子的原因。

  你应该注意到了, 在combo-chart身上调用plot方法并没有产生所要求的结果。它只绘制了一个序列。

  现在你问问自己, 如果 roles 表现得像类的话那么它们的用途是什么呢?

  要回答你的问题, 修改第一个用于展示多重继承的脚本, 这个脚本中我们忘记重写plot方法了。

  如果多个 roles 被应用到同一个类中, 会出现冲突并抛出一个编译时错误。

  这是比多重继承更安全的方法, 其中冲突不被认为是错误并且简单地在运行时解决。

  你应该看到当错误出现时(在这个例子中把数组赋值给字符串变量)程序会停止并且其它行的代码不会被执行, 即使它们是正确的。

  CATCHblock 能像定义givenblock 那样定义。这意味着我们能捕获并处理各种不同类型的异常。

  在这个例子中, 智能匹配操作符~~用于检查一个字符串(enlightenment)是否包含一个单词(light)。

  除非显式地指定, 否则空白是无关紧要的,m/light/和m/ light /是相同的。

  当匹配字符串的正则表达式成功时, 匹配结果被存储在一个特殊的变量$/中。

  这个例子中用于电子邮件检测的 regex 不是很准确。它的核心意图是用来解释 Perl 6 中的 regex 的功能的。 不要在生产中原样使用它。

  MD5有多种加密存储在数据库中的口令的应用程序。当新用户注册时,其证书并不存储为纯文本,而是散列。这样做的理由是,如果该数据库被破解,攻击者将不能够知道口令是什么。

  幸运的是, Perl 6 已经有一个能实现MD5算法的模块。我们安装下:

  为了运行创建哈希的md5_hex()函数, 我们需要加载需要的模块。use关键字用于加载模块。

  UTF-8 是能够以Unicode编码所有可能的字符或代码点的字符编码。

  运行两个例子(使用和不使用race)运行之后, 比较两个脚本运行结束所花费的时间。

  并行总是添加线程开销。如果开销抵消不了运算速度的增长,那么该脚本会显得较慢。

  这就是为什么,在很简单的脚本中使用race,hyper,start和await实际上可以使它们慢下来。

  Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...

  第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型和基本包装类型 用类型的值(对象)是引用类型的-个实例。在ECMAScript中,引用类型是--种数据结构, 1 I用于将数据和功能组织在一起。它也常被称为类,...

  1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。 1、一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publ...

  尽管已经很晚了,但我必须记录下这两天重要的时刻。这些感受截然不同,感动,惊险,害怕。 首先昨天下午难得有空去接孩子放学回家,出教室后发现孩子胸前有一枚贴奖。哇!我好像比孩子更兴奋,这是孩子第一次得的奖励。我自然兴奋得不得了,各种问她,各种夸,她似轻描淡写。反应比我想象中要低...

  我站在冷风里送你,一个姐姐在不停的说你要怎样怎样好好生活之类的。我只是站在那里沉默着,感觉有很多话想说,但是说不出口。比如我很想念你,比如这次分开后后会无期,我们不知道何时见面了。 我不知道该怎么形容我们之间的关系,明明见面彼此嫌弃互相挖苦,然而那天你说你要走了,...

  落地窗外有几棵银杏树裹着锦衣,灿然若笑,片片黄叶飘落,层层叠叠地覆盖在树底,随风翻飞,树上树下相得益彰。 银杏心语又见金风绣锦杉一生炫彩最开颜虽惜迟暮才圆梦终把辉煌戴桂冠 手捧茶杯,想起咏银杏的古体诗,见景配诗更唯美,贮立窗前几分钟,高强度工作带来的疲劳消散许多。 我在杭州...

http://korinkorin.com/zilicheng/114.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有