zoukankan      html  css  js  c++  java
  • 非典型的scala程序及其编译后的结果

    初学Scala


    Folder structure以及部分代码



    package.scala的代码

    package  comx 
      
      
      package object mypkg {
          def myprint = println("Hello Ji2 in package object")
      }
      object mypkg2{
         def myprint = println("Hello Ji2 in object")
      } 
    

    命令行

    >scalac mypkg/package.scala newt.scala

    >scala Test2

    结果

    Hello Ji2 in package object
    ()
    Hello Ji2 in package object
    ()
    Hello Ji2 in object
    ()
    

    ======================

    分析:

    代码初学好的时候。src以下仅仅有一个文件newt.scala 和一个目录mypkg, 内涵package.scala,

    运行了scalac以后。 src以下多了几个class。 多了一个comx folder



    comx folder


    mypkg folder


    可见

    1 scala的package 语句指定了class文件的生成的地方,即使原来不存在

    2 package object 的定义文件package.scala 应该是在mypkg folder中

    3 object 的class文件 在package指定的folder下

    4.package object 没有相应的class。 在package.class中。 变为package comx.mypkg, 成了pakage结构的一层

    5. newt.scala中, object 的名字是Test2, 所以scala命令的參数是Test2,   而不是newt, 否则报错


    后记。对于第二点我又做了实验

    把src/mypkg   -> mypkg2 ,里面的文件package.scala ->package_n.scala,

    package_n.scala加了一个package object定义

        package object mypkg3 {
          def myprint = println("Hello Ji3 in package object")
      }

    结果和上次的差异

    comx以下变成了两个folder :mypkg & mypkg3


    结论:

    package object的定义文件的名字随意,位于的folder名字也随意,

    反而是每一个package object的名字会生成一个folder。里面都是各自己定义相应的class: package.class & package$.class


  • 相关阅读:
    AIO异步非阻塞学习
    Netty TCP粘包/拆包问题《二》
    Netty TCP粘包/拆包问题《一》
    修改host文件屏蔽视频广告和网站
    HTML DOM参考手册
    PPT图片快速编辑技巧
    ExtJS ComboBox的用法+代码
    4_python之路之模拟工资管理系统
    3_python之路之商城购物车
    2_python之路之多级菜单
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6940305.html
Copyright © 2011-2022 走看看