zoukankan      html  css  js  c++  java
  • 第10章 包 名字空间,变量和函数

    名字空间,变量和函数就不会把别人的变量和函数搞砸了,反之亦然,名字空间有点像你的家,你的家里想怎么乱都行,

    只要你保持你的外部界面对其他公民来说是适度文明就可以了。

    在Perl里,一个名字空间叫一个包,包提供了基本的制作块,在它上面构造更高级的概念,比如模块和类等。

    在OO的说法中,每个对象都属于一个叫做类的组。在Perl里,类和包以及模块之间的关系是如此密切,

    以至于需要新手经常认为它们是客户呼唤的,典型的类是用一个定义了与该类同名的包名字的模块实现的。

    Perl里的面向对象的编程是通过引用来实现的,这些引用的引用物知道它们属于哪些类。

    10.1 符号表

    一个包的内容总体在一起称作符号表,符号表都存储在一个散列里,这个散列的名字和该包的名字相同,

    但是后面附加了两个冒号。因此main符号表的名字是%main::.

    因为碰巧也是缺省的包,Perl 把%::当做%main::的缩写。

    因为包是散列,因此你可以找出该包的键字然后获取所有包中的变量。因此该散列的数值都
    是类型团,你可以用好几种方法解引用。比如:
    foreach symname(sortkeyslocalsym=main::{symname};  
    print “$
    symname is defined " if defined $sym; ##解引用标量

    print “@$symname is nonnull ” if @sym; ##解引用数组

    print “\%$symname is nonnull ” if %sym; ##解引用hash
    }

    在Perl里,一个名字空间叫一个包。

    在面向对象里,每个对象都属于一个叫做类的组。

    Perl里面向对象的编程是通过引用来实现的,

    一个独立命名空间中的变量就是对象的数据 函数就是对象的方法,

    所以perl里只需要包package的观念就可以实现 OO了 不需要特别的类Class,

    你把一个package隔离的命名空间叫做“类”也可以 效果类似

    所谓的类 对象 只是你在单独命名空间中操作的变量和函数 这样应该好理解, 不要再去想其他语言的Class之类的东西 perl没

    朝着生态编程的第一步是: 不要在公园里乱丢垃圾,

    当你写一段代码时,考虑一下给这些代码自己的名字空间,这样你的变量和函数就不会把别人的变量和函数搞砸了,

    反之亦然。名字空间有点像你的家,你的家是想怎么乱都行,只要你保持你的外部界面对其它公民说是适度文明就可以了。

    在perl里,一个名字空间叫做一个包。包提供了基本的制作块,在他上面构造更高级的概念,比如模块和类等。

    典型的类是用一个定了与该类同名的包名字的模块实现的

    10.1 符号表

    main包内容;

    [oracle@jhoa 2]cata2.plforeachkey (keys %main::)
    {print “$key=>main::{$key} ”;}

    [oracle@jhoa 2]perla2.pl/ => *main::/
    stderr=>main::stderrkey => *main::key
    utf8::=>main::utf8::” => *main::”
    $CORE:: => *main::CORE::

    一个包的内容总体在一起称做符号表,符号表都存储在一个散列里,这个散列的名字和该包名字相同,

    单手后面附加了两个冒号。因此main符号表的名字是%main::. 因为main碰巧也是缺省的包,

    perl 把%::, 当作%main::的缩写:

    [root@master Webqq]# cat t26.pl
    foreach key (keys %::)  
     {print “$$key =>   $main::{$key} ”;}  
    [root@master Webqq]# perl t26.pl
    version:: => *main::version::
    /=>main::/stderr => *main::stderr
    $_

  • 相关阅读:
    IP,子网,子网掩码,网关,DNS到底都是啥(二)
    (能被11整除的数的特征)The shortest problem --hdu
    (匹配 匈牙利)棋盘游戏 -- Hdu --1281
    (匹配)Courses -- hdu --1083
    (匹配 最小路径覆盖)Air Raid --hdu --1151
    (匹配)The Accomodation of Students --HDU --2444
    (匹配)Fire Net --hdu --1045
    (二分匹配 模板)过山车 -- hdu --2063
    (连通图 ) Redundant Paths --POJ --3177
    (二分匹配 模板 KM)奔小康赚大钱--hdu--2255
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351349.html
Copyright © 2011-2022 走看看