如何运行Scala Object

news2024/11/16 18:05:45

一 、问题描述

执行一个Scala Obejct 程序,Java 沿袭过来的当然直接用main,Scala 官方还提供了另外的一种方法

  1. 定义的object extend App trait
  2. 在object中定义好main()

二、Scala CookBook

这是一段对《 Scala Cookbook》的摘抄,6.4 如何运行一个Scala Object 应用

2.1 extends App

object Launch extends App {
  print("extends App to run this object")
}

继承了这个App,这个object会自动的run ,就像它嵌入在mian方法中一样

$ scalac Launch.scala

$ scala Launch
extends App to run this objec

scalac 编译 .scala 文件,scala run Launch.class
在这里插入图片描述
当用这个方法的时候,任何 命令行 参数 都 作为 args对象 隐式可用,这都是App继承下来的。
args对象:一个Array[String] ,就像你自己声明的一样

object Launch extends App {
  if(args.length == 1)
    print(s"arguments' length is 1,and the value is${args(0)}")
  else
    print("arguments' length is != 1")
}

在这里插入图片描述

2.2 main()

略 和java一样

三 、区别

App是一种更方便的方式去创建可执行的scala,和main()的区别是 延迟初始化(当真正使用的时候才会启动)

scala App trait

注意用两种launch 方式都是用的 object 而不是 class
我更倾向于用App去处理 大型程序 或者 脚本

see also

https://stackoverflow.com/questions/11667630/difference-between-using-app-trait-and-main-method-in-scala

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能时代,Python还不快学起来吗

“是时候学点Python了”。作为一名不怎么安分的程序员,你或许觉得,产生这样的想法并不奇怪,但学习Python却是出于自己对工作现状以及如何应对未来挑战所作出的思考。读过我以前博客的朋友,可能都知道,我推崇软件领域中…

Android开发黑白灰模式和夜间模式设置

接口数据来源鸿洋大神“玩安卓”网站:https://wanandroid.com/ 黑白灰正常模式和黑白灰夜间模式截图 夜间模式与正常模式截图 黑白灰与原色模式设置 /*** 设置灰白色*/protected void setGrayScreen() {Paint paint new Paint();ColorMatrix cm new ColorMatrix(…

八十七氟癸基笼状聚倍半硅氧烷poss

八十七氟癸基笼状聚倍半硅氧烷poss 八十七氟癸基笼状聚倍半硅氧烷是一种含氟有机、无机杂化的笼状聚倍半硅氧烷,可用于可用于热塑性塑料体系改性,降低其表面能。也可用于自修复超疏水材料。 应用领域 1、塑料改性,降低表面张力 2、自修复…

【温故而知新】分布式系统(二)

分布式系统的 CAP 理论 时间:2022年12月12日 作者:小蒋聊技术 【温故而知新】分布式系统(二)分布式系统的 CAP 理论_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅手机版欢迎收听小蒋聊技术的其他类最新章节声音“【温故而知新】分…

漏洞深度分析|Thinkphp 多语言 RCE

项目介绍 ThinkPHP 是一个快速、简单的面向对象的轻量级 PHP 开发框架,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。 根据目前FOFA系统最新数据(一年内数据)&#xf…

基于昇思MindSpore,实现使用胶囊网络的图像描述生成算法

项目链接 https://github.com/Liu-Yuanqiu/acn_mindspore 项目描述 图像描述生成算法 人类可以轻易的使用语言来描述所看到的场景,但是计算机却很难做到,图像描述生成任务的目的就是教会计算机如何描述所看到的内容,其中涉及到了对视觉信…

JavaOOP面试题(108道)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

mybatis以及mybatisplus批量插入问题

1. 思路分析: 批量插入是我们日常开放经常会使用到的场景,一般情况下我们也会有两种方案进行实施,如下所示。 方案一 就是用 for 循环循环插入: 优点:JDBC 中的 PreparedStatement 有预编译功能,预编译之…

vue3较vue不同的地方

自定义指令的区别: vue2的写法: Vue.directive(scroll, {}) //scroll是指令名称 vue3的写法: 定义全局的:在main.js文件中定义: createApp(App).directive("hello",{}).use(store).use(router).mount(#…

小程序import及include引用的简单理解

场景:在小程序中,WXML 提供两种文件引用方式import和include 我自己记录下自己的一些简单理解 官方文档:引用 | 微信开放文档 第一:import import,就是可以引入自定义指定的template模板 比如:我在import页…

stm32f767之ADC

一,基本介绍 1,ADC时钟。 ADC时钟一般常用来自于经可编程预分频器分频的APB2 时钟,该预分频器允许ADC 在fPCLK2/2、 /4、/6 或/8 下工作。ADCCLK 的最大值限制。2,ADC通道。 有16 条复用通道。我的理解是每个ADC(1&…

气泡水位计安装示意图 气泡水位计工作原理

气泡式水位计测量精度高,免气瓶,免测井,免维护,抗振动,寿命长,特别适用于流动水体、大中小河流等水深比较大的场合。具有安装简单,操作、组网灵活,尤其是无井水位测量最理想的水位监…

城市燃气系统安全解决方案

汽车制造业 MES系统 DNC系统 生产 安全域1 管理层 工控安全隔离装置 交换机 安全配置核查系统 HMI 历史数据库 运行监控系统 实时数据库 打印机过程 安全域2 监控层 工控漏洞扫描系统 安全交换机 工控安全审计系统 工控入侵检测系统工程师站 A 操作员站 A 实时数据库A 操作员站…

[附源码]Python计算机毕业设计SSM基于的冠状病毒疫情防控资讯交流推荐网站(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

stream_open函数分析

在讲 stream_open() 函数之前,需要先了解 stream_open() 里面使用到的一些基本的数据结构。如下: 第一个数据结构是 struct VideoState ,VideoState 可以说是播放器的全局管理器。字段非常多,时钟,队列,解…

Android 11 的状态栏的隐藏

概述 Android 11 的状态栏与导航栏较之前的版本有较大的差异, 在Android 7.0 SystemUI 状态/导航栏的隐藏与显示中所描述的部分内容已不再适用. 比如, 自动隐藏的时间, 隐藏的动画, 较之前的版本已面目全非, 本文将对隐藏状态栏部分的内容进行一些补充. APP如何隐藏状态栏 参…

Yield Guild Games 成功举办首届 SubDAO 峰会

Yield Guild Games(YGG)于 2022 年 11 月 18 日在菲律宾马尼拉举行了第一届 SubDAO 峰会。 SubDAO 峰会与菲律宾 Web3 狂欢节两个活动同时举行,为 YGG 的区域 SubDAO 提供了在 Web3 应用中心——菲律宾进行面对面交流的机会。此次活动旨在传达…

运维开发实践 - helm

1. helm介绍 helm 是一个用于管理部署在kubernetes上的应用的工具 使用要求:一个Kubernetes集群 2.下载安装 Helm Github Download Helm Huawei Source 按照自己的操作系统版本下载相应的helm压缩包 并将helm添加到环境变量中; # 检查是否安装成功 helm version…

read_thread解复用线程分析

read_thread() 线程的主要作用从 MP4 里面读取 AVPacket,然后丢进去 PacketQueue 队列。所以需要先学习一下 strcut PacketQueue 跟 struct MyAVPacketList 数据结构。如下: typedef struct MyAVPacketList {AVPacket *pkt;int serial; } MyAVPacketLis…

html文件里怎么引用vue组件?

这里我们使用 http-vue-loader 来实现&#xff1a;https://www.npmjs.com/package/http-vue-loader Load .vue files directly from your html/js. No node.js environment, no build step. 我做了个demo如下&#xff1a; html文件里面写下面的代码 <!DOCTYPE html> &l…