当前位置: 首页 > news >正文

YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序

YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序

【免费下载链接】yamlscriptProgramming in YAML项目地址: https://gitcode.com/gh_mirrors/ya/yamlscript

🐍 想在 YAML 里直接写程序?YS(YAMLScript)就是这样一种工具:它把代码变成数据,让你用熟悉的 YAML 语法写变量、函数、循环和逻辑,一条命令安装ys解释器和libys共享库,5 分钟就能跑通第一个 YAML 程序。本教程面向新手,带你完整走完安装与运行全流程。

为什么选择 YAMLScript?

传统 YAML 只是配置文件格式,想合并配置、计算字段、转换数据,就得额外写一堆脚本。YAMLScript(简称 YS)让你直接在 YAML 文件里写逻辑,而且 100% 兼容现有 YAML 文件——不加代码就只是普通 YAML,加了代码才执行。

YS 的核心优势:

  • 32 种语言统一 API:Python、Rust、NodeJS、Go、Ruby 等,同一套语法到处用
  • 原生编译yslibys都是原生二进制,速度快、零运行时依赖
  • 🧰内置 1000+ 函数:字符串处理、数据转换、文件导入、环境变量,一应俱全
  • 📦完整编程语言:底层编译为 Clojure,需要时可用全部函数式编程能力

准备工作:确认系统支持

yslibys由 GraalVM 的 native-image 编译,目前支持:

操作系统架构
Linux / macOSIntel/AMD(x86_64)、ARM(aarch64)

💡 Windows 支持即将到来。只需bashcurl即可安装,无需其他依赖。

第 1 步:一行命令安装 ys 和 libys

打开终端,运行安装脚本,同时安装ys命令和libys共享库:

curl https://yamlscript.org/install | bash

这条命令会下载对应系统的预编译包,安装到~/.local/bin/ys~/.local/lib/libys.so

几个常用可选参数:

# 安装指定版本 curl https://yamlscript.org/install | VERSION=0.2.29 bash # 只装共享库 libys curl https://yamlscript.org/install | LIB=1 bash # 只装 ys 命令 curl https://yamlscript.org/install | BIN=1 bash

📌 官方完整安装说明见仓库中的doc/install.md,安装脚本源码在www/src/install

备选方案:用 Homebrew 安装

如果你使用 macOS 或 Linux 上的 Homebrew:

brew tap yaml/yamlscript brew install ys brew install yaml/yamlscript/libys

以后升级只需brew upgrade,同样省心。

第 2 步:验证安装是否成功

运行版本命令确认安装:

ys --version

看到版本号输出(如ys version 0.2.29)就说明一切就绪。如果提示"找不到命令",按安装脚本的提示把~/.local/bin加入 PATH:

export PATH=$HOME/.local/bin:$PATH

第 3 步:编写你的第一个 YAML 程序

新建文件hello.ys,内容如下(与仓库示例sample/www/hello.ys一致):

#!/usr/bin/env ys-0 defn main(name='world'): greet: name defn greet(name): say: "Hello, $name!"

看不懂没关系,逐行解释:

  • 第一行的#!/usr/bin/env ys-0是文件头标记,声明这是一个 YS 程序
  • defn main(...)定义主函数,name参数默认值为world
  • say: "Hello, $name!"打印字符串,$name是变量插值

这就是全部——用 YAML 写的函数定义和变量插值,是不是比想象中简单?

第 4 步:运行程序,看到输出

在终端执行:

ys hello.ys Ingy

输出:

Hello, Ingy!

🎉 恭喜!你的第一个 YAML 程序跑通了。不传参数时则输出Hello, world!

想看看 YS 底层编译出了什么 Clojure 代码?用-c参数:

ys -c hello.ys

学习时这个调试技巧非常有用(详见doc/tutorial.md语法基础教程)。

第 5 步:加载现有 YAML 并转成 JSON

YS 同时也是个强大的 YAML 加载器。假设你有配置文件file.yaml

name: Fido age: 6 dog years: 42 likes: [running, fetching, playing, treats]

一行命令转成 JSON:

ys --json file.yaml

输出:

{"name":"Fido", "age":6, "dog years":42, "likes":["fetching", "playing", "running", "treats"]}

更进一步,加上!ys-0标签后就能在 YAML 里写逻辑,让dog years自动计算、likes自动排序:

!ys-0: age =: 6 name: Fido age:: age dog years:: age * 7 likes:: sort:: [running, fetching, playing, treats]

=用于赋值变量,::表示后面的值是代码表达式——就这两个符号,你已经会写"会思考的 YAML"了。

进阶:在自己编程语言中集成 libys

libys共享库可以被几乎所有语言调用,作为现有 YAML 加载器的直接替代。以 Python 为例,安装同版本库后:

import yamlscript ys = yamlscript.YAMLScript() config = ys.load(open('config.yaml').read())

仓库为每种语言都提供了绑定模块和测试,例如:

  • Python 绑定:python/lib/yamlscript
  • Rust 绑定:rust/src
  • NodeJS 绑定:nodejs/lib
  • Go 绑定:go/yamlscript.go

各语言的使用示例完整收录在根目录ReadMe.md中。

常见问题快速解答

Q:libys 版本需要和语言库版本一致吗?需要。安装某语言的 YS 加载库时,请安装完全相同版本libys共享库。

Q:只想临时体验一下 ys 命令?可以把PREFIX指向临时目录:curl https://yamlscript.org/install | PREFIX=/tmp/yamlscript bash

Q:没有 brew、网络受限怎么办?可以克隆源码仓库(https://gitcode.com/gh_mirrors/ya/yamlscript)后运行make install,只需 bash、git、make、curl 四个工具,Linux 上另需libz-dev包。

下一步学什么?

  • 语法基础:doc/tutorial.md(斐波那契数列例子带你入门)
  • 完整安装指南:doc/install.md
  • 可运行的示例程序:sample/目录下有大量 YS 示例,包括 Rosetta Code 经典题目
  • 项目总览与 32 种语言用法:根目录ReadMe.md

现在你已经完成了 YAMLScript 快速上手:5 步安装yslibys,并跑通了第一个 YAML 程序。把配置文件从"静态数据"升级为"可执行逻辑",就从你的下一个.yaml文件开始吧!

【免费下载链接】yamlscriptProgramming in YAML项目地址: https://gitcode.com/gh_mirrors/ya/yamlscript

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4157745.html

相关文章:

  • Apktool APK 逆向完整指南:如何快速解码与重打包一个 Android 应用
  • Vue 文档编辑器快速上手指南:如何把 Vue 应用变成 A4 纸式的在线文档
  • 无界 Wujie 微前端实战:三步接入、三种模式与高频坑的完整指南
  • IP地址与子网掩码深度解析:从原理到实战的网络配置指南
  • Numa Balancing 入门
  • kaml快速开始:data class与YAML双向转换,4个实战例子讲清核心用法
  • OBS RTSP 服务器搭建:5分钟装好 obs-rtspserver 插件并出流
  • MobaXterm Keygen 快速上手:3 步生成专业版许可证文件
  • 拆解Orbit区块链交易调查工具核心代码:ranker排行算法、getNew去重与pageLimit分页机制详解
  • 现货电价API接入最佳实践:日前电价、实时电价、节点电价和96点数据
  • 安全先行:office-docs-powershell管理员必须知道的8个PowerShell认证与权限最佳实践清单
  • Triton前置——Python基础语法
  • HumanInput源码剖析:8KB事件库如何解析复杂的组合事件字符串,EventHandler设计全解读
  • NAND闪存工作原理——SSD数据是如何存储的?
  • SDRangel SDR信号接收与频谱分析快速上手
  • 一台电脑两台手柄?任意 PC 游戏双人分屏的完整指南
  • 跑通多模态情感分析:Multimodal-Sentiment-Analysis 图文融合实战指南
  • MonitorControl|macOS外接显示器亮度音量一键调:多屏办公党的屏幕控制方案
  • 论文AI率0%黑科技!降AIGC网站留学生亲测::Turnitin查重秒变“教授最爱”原创风
  • 题解:洛谷 P3184 [USACO16DEC] Counting Haybales S
  • 文档加载工程:从多格式数据到标准化Document对象的实战指南
  • 5 步装好 Windows 微信防撤回补丁:RevokeMsgPatcher 新手完整教程
  • Unlock-Music 音乐解密完整指南:在浏览器里批量解密 qmc、ncm 等加密音乐文件
  • AnythingLLM 本地部署完全指南:私有知识库文档问答
  • Linux入门攻坚——86、ELK Stack-1-基本概念
  • SpringBoot+微信小程序旅游平台:从零到部署的毕设实战指南
  • U盘重装Windows系统全攻略:从启动盘制作到安装设置详解
  • DatalinkX 快速上手指南:从零到跑通第一个数据同步任务
  • 3分钟把整本网页小说存成EPUB:WebToEpub离线阅读工具上手笔记
  • LinkSwift 网盘直链解析工具:实用新手指南