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


  • 相关阅读:
    Kubernetes弹性伸缩全场景解读(五)
    阿里靠什么支撑 EB 级计算力?
    云原生生态周报 Vol. 2
    国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google
    GitOps:Kubernetes多集群环境下的高效CICD实践
    阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?
    noip2012 开车旅行
    noip2012 借教室
    noip2012 同余方程
    noip2012 国王游戏
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6940305.html
Copyright © 2011-2022 走看看