Kotlin 运行代码片段多种方式

目录

场景描述

一、Scratch files and worksheets in the IDE

1、Scratch files(草稿文件)

特点:

Scratch files文件创建步骤:

功能解释:

Scratch Buffer笔记文件:

2、Worksheets(工单)

1)、创建方式不同。

2)、文件存储位置不同。

3、REPL

1)、Scratch Files支持REPL方式;

2)、WorkSheets支持REPL方式;

3)、通过IDE菜单栏打开;

二、Kotlin Playground in the browser

三、ki shell in the command line


场景描述

你是否有这样的需求?

requirement:有一段代码或者一个功能方法,没有100%把握是否OK,想写个main函数测试一下。

但是 IDEA 开发工具已经打开了其他项目工程,不方便写测试代码。或者不想打开 IDEA 项目工程,就只想简单的运行我的测试代码。有没有简单&快捷的方法呢?

answer。Kotlin为我们提供了如下三种场景的多种方式。

一、Scratch files and worksheets in the IDE

老文档:https://legacy.kotlincn.net/docs/tutorials/quick-run.html

新文档:https://www.jetbrains.com/help/idea/kotlin-repl.html

这个场景是依赖 IDEA 的,使用 IntelliJ IDEAAndroid Studio 都可以。

这个场景有三种具体的方式:

1、Scratch files(草稿文件)

Scratch files(草稿文件)方式,即是新建一个临时的草稿文件。

特点

1)、你可以在其中编写任意的Kotlin代码(如果你选择的是Kotlin语言类型的话),编写的所有内容最后会被当做main函数的函数体被执行。

2)、Scratch files文件支持语法高亮、代码补全、表达式计算、debug调试等完整的功能。

3)、Scratch files文件创建时,需要使用IDE(IntelliJ IDEA 或 Android Studio 都可以)打开任意一个项目,然后借助项目的IDE窗口,在左侧Projects View视图窗口右键单击,在弹出的菜单中选择 Scratch files 选项创建草稿文件。

4)、Scratch files文件存储的位置是:

Windows 平台:C:\Users\你的账号名称\AppData\Roaming\JetBrains\IdeaIC2024.1\scratches

Mac和Linux未测试过。想查看的话,可以右键单击scratch.kts文件,选择Open In -> Explorer 打开文件夹查看具体位置。

5)、Scratch files无内容关闭时,会自动删除文件。即当你清空Scratch files文件的内容后,再关闭文件。此时IDE会自动帮助你删除这个空的Scratch files文件。

*老版本的Kotlin,对Scratch files文件个数有限制(最多6个文件,再创建会覆盖scratch_1.kts)。测试了新版本创建10个文件都没问题。

Scratch files文件创建步骤

第一步:在项目任意位置右键单击,打开菜单New -> Scratch File。

第二步:选择Scratch Files 后,会弹出语言选择窗口。根据你的需要,选择Kotlin、Java或者其他类型的语言都可以,根据你自己的需要。

第三步:语言类型选择好后,就会自动创建好Scratch Files 文件,并且打开。

功能解释:

1)、标记的第一块区域,Scratch Files 文件创建的位置。与具体的项目(如:Test_0623)无关,就算你关闭/删除了Test_0623这个项目也不会影响到Scratch Files文件。当前你创建的Scratch Files文件依旧会在Scratches and Consoles目录树中。

根据官方解释,Scratches and Consoles目录中还可以存放sql相关的测试文件,如果你安装了databases 数据库相关的插件后。

2)、标记的第二块区域,是Scratch Files文件的编辑区域,你可以在里面写任意代码。你所编写的任意内容会被包裹在main函数中最后被执行,即Scratch Files文件内容被当做main函数的函数体。

3)、标记的第三块区域,是Scratch Files文件内容执行的结果显示区域。

4)、代码编写好后,你可以点击图中的4(运行箭头按钮)执行程序。

5)、如果你想删除右边的执行结果,可以点击5(垃圾桶按钮)清空上一次的执行结果。

6)、如果你勾选了Interative mode选项,则会在你停止输入代码时,立即自动执行当前输入的所有程序,并在右侧打印执行结果。否则的话,需要你手动点击4(运行箭头按钮)执行程序。

7)、REPL模式表示,程序可以循环利用。上一步执行的结果会被存入res*格式的变量中,在下一行代码中可以使用res*变量参与运算。后面的篇幅中会讲到的。

8)、如果你的代码中需要用到某个 module中的类,或者你需要依赖某个第三方库时,你可以把需要依赖的库或者类文件放入某个module中,然后修改当前Scratch Files文件顶部的Use classpath of module选项,选中被依赖的目标module,即可在当前Scratch Files 文件中使用第三方库或类文件了。如果你选择了module后,上边还会多出一个复选框Make module before Run,聪明的你一眼就能看出什么意思。

Scratch Buffer笔记文件:

发现还有个New Scratch Buffer功能,即可以在Scratch files文件同目录下,创建普通的文本文件,暂时缓存有用但是不方便运行的代码,就像是普通的记事本工具。

New Scratch Buffer创建方式:在IDE内双击Shift打开全局搜索窗口,然后输入buffer,结果列表中的第一个就是。

2、Worksheets(工单)

Worksheets(工单)与Scratch files相比,功能几乎一样,略有不同。

不同点如下:

1)、创建方式不同。

第一步:选择你想要存放Worksheets文件的目录位置,然后右键单击打开选择菜单,选择New -> Kotlin Class/File。

第二步:在打开的Kotlin内容选择菜单中,选择Kotlin worksheet选项,并输入文件名,回车确认。(新/老版本文档中描述的创建步骤有差异)。

第三步:文件创建好后,如下图:

第四步:此时报红,缺少 runtime 环境。写点代码,鼠标放上去按照报错提示操作。

第五步:在弹出的对话框中,点击OK即可。

2)、文件存储位置不同。

正如上面截图所示,创建的文件 TestSheet.ws.kts 是在项目内的,而非全局公共区域。

这样有个好处是,你可以创建这样的文件作为演示或者教学使用的案例文档,与项目具体的功能块存放在一起。

3、REPL

REPL中文全称:读取-求值-输出-循环。

英文全称:Read-Eval-Print-Loop。

官方解释:

Kotlin REPL allows you to execute code on the fly without having to create files or configure a runtime environment for it. Also, it accepts simplified syntax so that it is possible to execute code with less ceremony.

翻译:

Kotlin REPL允许您动态执行代码,而不必为其创建文件或配置运行时环境。此外,它接受简化的语法,因此可以用更少的套路来执行代码。

通过REPL全称和解释,还是很难理解REPL到底是啥和如何使用。还好我看过官方文档的完整教程。通俗易懂的解释是:REPL方式拥有Scratch Files/WorkSheets方式全部的功能。但还有一个NB的功能,REPL为每一行表达式计算后的结果定义了变量,命名格式以res0开始(如果有第二个、第三个变量,则会命名为res1和res2)。然后你在写后面代码时,是可以引用前面的res*变量的,即计算结果循环利用。

例如:

REPL打开方式:

1)、Scratch Files支持REPL方式;
2)、WorkSheets支持REPL方式;
3)、通过IDE菜单栏打开;

在IDE菜单栏选择 Tools -> Kotlin -> Kotlin REPL(Experimental)

按照上面的步骤操作后,就会在IDE的Run窗口打开命令行窗口:

二、Kotlin Playground in the browser

这种方式是打开一个浏览器网址,在浏览器上完成代码编写和运行。网址是 Kotlin Playground: Edit, Run, Share Kotlin Code Online。

这种方式优点:

1)、你可以选择kotlin的编译版本;

2)、你可以在线分享代码链接Copy Link;

3)、你可以嵌入代码窗口到别的网页中Share code online;

更新的信息,请自己去探索吧,这儿就不说了。

三、ki shell in the command line

ki shell:全称是 Kotlin interactive shell。kotlin交互命令行,是一套在命令行中运行kotlin的工具集,支持的平台有Linux、macOS和Windows。

使用这种方式,需要安装koltin的命令行编译环境,下载地址:https://github.com/Kotlin/kotlin-interactive-shell
下载后解压到某个目录,然后运行 bin\ki.bat 文件(Windows平台)打开命令行窗口,即可开始快乐的写代码了。

这种方式提供了很多高级的功能:

1)、代码自动补全和语法高亮;

2)、类型检查;

3)、外部关系依赖;

4)、代码段粘贴模式;

5)、脚本支持;

更多的功能和用法,请自己去探索吧。

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

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

相关文章

国内有哪些比较优秀的wordpress主题?

WordPress作为全球最受欢迎的开源内容管理系统之一,拥有众多优质的主题供用户选择。那么国内有哪些比较优秀的wordpress主题呢?下面小编就和大家分享国内功能比较完善比较受欢迎的wordpress主题。 wordpress主题合集:WP主题-办公人导航https:…

浅析缓存技术

缓存技术的原理 缓存技术通过在内存中存储数据副本来加速数据访问。当应用程序需要数据时,首先检查缓存是否存在数据副本,如果有则直接返回,否则再从原始数据源获取。这种机制大大减少了访问时间,提升了系统的响应速度和整体性能。…

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器&#xff08…

centos7 根目录扩容

1、先检查一下磁盘空间 [rootlocalhost ~]# lsblk 二、使用fdisk创建新分区 [rootlocalhost ~]# fdisk /dev/vdb 1、输入 p ,查看当前分区表; 2、输入 n ,新建一个分区; 3、再输入 p ,选择分区类型为主分区&#x…

智能化改造助力企业高质量发展

引言 背景介绍 在当今全球经济环境中,变化和不确定性已成为常态。企业面临的竞争压力不断增加,市场竞争日益激烈。新兴市场的崛起、技术进步和消费者需求的快速变化,使得传统的商业模式和生产方式面临巨大挑战。为了在这样的环境中保持竞争力…

摄影约拍管理系统

摘 要 摄影约拍管理系统是一种基于SSM框架的系统,旨在为摄影师和用户提供便捷的约拍服务。本文通过对系统的设计与实现,解决了传统约拍方式中存在的信息不对称、预约流程繁琐等问题。本文介绍了系统的研究背景与意义,分析了国内外发展现状&a…

应届毕业之本科简历制作

因为毕设以及编制岗位面试,最近好久没有更新了,刚好有同学问如何制作简历,我就准备将我自己制作简历的流程分享给各位,到此也算是一个小的结束,拿了工科学位证书毕业去做🐂🐎了。 简历主要包含内…

光泽正在褪去,所以我们又回到了人工智能领域。

光泽正在褪去,所以我们又回到了人工智能领域。 人工智能冬天将被私有化 自从“人工智能”这个流行词在20世纪50年代被创造出来以来,人工智能经历了几次繁荣和萧条周期。 一种新的技术方法看起来很有趣,并取得了一些成果。它被荒谬地炒作并获…

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上&am…

设计模式导读:建造者模式的细腻之处与编程技巧

笔者的碎碎念 其实之前有写过建造者模式的文章,但是感觉其实写的不怎么样,而且自己也理解的一般,但是阅读一些框架源码发现,这些模式真的蛮重要的,很多框架例如OkHttp,Retrofit等等都大量使用了建造者模式…

人脸处理——人脸换脸基础算法探索与应用测试指南

人工智能(AI)彻底改变了我们生活的许多方面,而这项技术的应用之一就是AI换脸工具。这些工具使用先进的计算机视觉技术和深度学习算法,例如生成对抗网络 (GAN),在照片或视频中将一个人的脸与另一个人的脸交换。 1. Dee…

六西格玛培训公司:解锁成功之门,让企业与个人共赴“嗨”途

在竞争激烈的21世纪,六西格玛培训公司手握一把神奇的钥匙,帮助企业及个人轻松开启成功的大门。 对企业来说: 产品质量飞跃:不再是偶尔的精品,而是每个产品都如同精雕细琢的艺术品,吸引无数顾客争相购买。…

web3.0链游农民世界开发搭建0撸狼人杀玩法模式定制开发

随着区块链技术的飞速发展,Web3.0时代的链游已成为游戏行业的新宠。本文将介绍一款基于Web3.0的链游——农民世界,如何定制开发0撸狼人杀玩法模式,以及该模式的专业性、深度思考和逻辑性。 一、背景介绍 农民世界是一款以农业为主题的链游…

嵌入式系统基础

嵌入式系统基础主要包括以下几个方面: 1、定义: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它由硬件和软件组成&#xff0…

.NET 通过UserInit键实现Windows权限维持

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

Spring Boot 学习第七天:动态代理机制与Spring AOP

1 概述 在Java的世界中,实现AOP的主流方式是采用动态代理机制,这点对于Spring AOP也一样。代理机制的主要目的就是为其他对象提供一种dialing以控制对当前对象的访问,用于消除或缓解直接访问对象带来的问题。通过这种手段,一个对象…

【Bugku CTF】web解题记录

记录我在Bugku CTF靶场中做的比赛真题,便于自己以后的复习 1.my-first-sqli 进入此关卡,发现参数有username和password 我们尝试在username上注入数字型、字符型参数,后面发现注入字符型的单引号的有报错语句,我们在username上注…

【服务器08】之【游戏框架】之【加载主角】

首先简单了解一下帧率 FixedUpdate( ) > Update( ) > LateUpdate( ) 首先FixedUpdate的设置值 默认一秒运行50次 虽然默认是0.02秒,但FiexedUpdate并不是真的0.02秒调用一次,因为在脚本的生命周期内,FixedUpdate有一个小循环&…

大学计算机

项目一 了解计算机 1.1 了解计算机的诞生及发展阶段 1.2 认识计算机的特点、应用和分类 1.计算机的特点 1. 计算机的特点 2.计算机的应用 3.计算机的分类 4.数量单位 1.3 了解计算机操作系统的概念、功能与种类 1.操作系统概念 2.操作系统的作用 1&#xff0e…

感应电机转差速度估算

在感应电机矢量控制中,需要计算出感应电机的机械转差速度(同步速度和转子速度之间的差)。以下方程描述了感应电机磁场定向控制 (FOC) 中转差速度值的关系: 如果我们保持转子磁通恒定,并且 d 轴与转子磁通参考系对齐&am…