mojo初体验

news2025/1/21 18:57:45

目录标题

  • mojo初体验
    • 试用地址
    • 变量定义
    • 参数可变性和所有权
    • Structures
    • 后续

mojo初体验

试用地址

https://www.modular.com/get-started
在这里插入图片描述

与python基础语法很相似。

变量定义

  • let定义不可变变量
  • var定义可变变量

参数可变性和所有权

下面是一个基本的函数:

fn add(x: Int, y: Int) -> Int:
    return x + y

请注意,上面的add()不会修改x or y,它只会读取值。事实上,正如所写的,函数无法修改它们,因为默认情况下fn参数是不可变的引用。

就参数约定而言,这称为“借用”,尽管这是函数的默认设置fn,但您可以使用borrowed如下声明将其明确化(其行为与直接使用add()完全相同):

fn add(borrowed x: Int, borrowed y: Int) -> Int:
    return x + y

如果您希望参数可变,则需要声明参数约定为inout。这意味着对函数内部参数所做的更改在函数外部可见。
例如,该函数可以修改原始变量:

fn add_inout(inout x: Int, inout y: Int) -> Int:
    x += 1
    y += 1
    return x + y

var a = 1
var b = 2
c = add_inout(a, b)
print(a)
print(b)
print(c)

2
3
5
另一种选择是将参数声明为owned,这为函数提供了该值的完全所有权(它是可变的并保证唯一)。这样,函数可以修改值,而不用担心影响函数外部的变量。例如:

fn set_fire(owned text: String) -> String:
    text += "🔥"
    return text

fn mojo():
    let a: String = "mojo"
    let b = set_fire(a)
    print(a)
    print(b)

mojo()

mojo
mojo🔥
在这种情况下,Mojo 会复制一份a并将其作为text参数传递。原来的a字符串仍然存在且完好。

总结:
borrowed 为默认,参数不可变
inout 参数可变
owned 参数可变,保留原参数

Structures

Mojo 中struct与 Python 中class类似:它们都支持方法、字段、运算符重载、元编程装饰器等。

后续

The Mojo🔥 SDK coming to your desktop soon!
九月初Mojo应该可以脱离playground在本地执行,目前已加入白名单,等待中。

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

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

相关文章

第一章 计算机概述

1.冯诺依曼结构: 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成 运算器和控制器称为CPU;CPU和存储器称为计算机主机;其余输入、输出设备、外存储器称为计算机外部设备采用二进制表示数据和指令 指令由操作码(…

AJAX学习笔记1发送Get请求

传统请求有哪些方式,及缺点 传统请求有哪些? 1.直接在浏览器地址栏上输入URL. 2.点击超连接. <a href"/上下文/请求地址">超链接请求</a> ---->相对路径 <a href"http://www.baidu.com">超链接请求</a> ---->绝对路…

【Java 基础篇】Java StringBuffer详解:更高效的字符串处理

在Java编程中&#xff0c;字符串是一个常见的数据类型&#xff0c;用于存储文本信息。然而&#xff0c;与字符串相关的操作可能会导致性能问题&#xff0c;因为字符串是不可变的&#xff0c;每次对字符串进行操作都会创建一个新的字符串对象。为了解决这个问题&#xff0c;Java…

Windows命令行初步:更改配色、提示符以及编码方式

文章目录 启动和退出窗口标题和提示符命令行颜色更改编码 启动和退出 按下winR&#xff0c;调出运行窗口&#xff0c;输入cmd就可以进入命令行了。在Win10以前的系统种&#xff0c;如果在命令行中再输入一个cmd&#xff0c;就会再打开一个命令行。但最近的Win11版本中&#xf…

[管理与领导-66]:IT基层管理者 - 辅助技能 - 4- 乌卡时代(VUCA )的团队管理思维方式的转变

目录 一、乌卡时代人与公司的关系的转变 二、乌卡时代管理方式的转变 三、乌卡时代的管理与传统时代的管理比较 四、乌卡时代管理者的挑战 五、乌卡时代如何做好管理 六、个人能力要求 一、乌卡时代人与公司的关系的转变 在乌卡时代&#xff08;指虚拟办公、远程工作等数…

实景三维数字孪生系统(实景三维电子沙盘)

一、概况 实景三维数字孪生系统是一种基于虚拟现实技术的系统&#xff0c;紧紧围绕应急处置的核心业务&#xff0c;通过将真实世界的物体、场景和过程数字化&#xff0c;创建出一个与真实世界相对应的虚拟模型。它可以模拟真实世界中的各种情境和操作&#xff0c;使用户能够在虚…

PYTHON知识点学习-函数调用中returnprint

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是Aileen★。希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由 Aileen_0v0★ 原创 CSDN首发&#x1f412; 如需转载还请通知⚠ &am…

1779_树莓派小车电机驱动软件实现

全部学习汇总&#xff1a; GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 前几天看了树莓派小车实现的硬件相关部件梳理视频&#xff0c;今天看了一段树莓派小车的电机驱动软件实现。 视频非常短&#xff0c;从里面能够提取出来的我感…

图上简单路径问题——转化为圆方树问题:abc318_g

https://atcoder.jp/contests/abc318/tasks/abc318_g 对原图建圆方树后&#xff0c;任意两点间的简单路径必然为其树上路径上方点对应其边双的点。 然后判断A&#xff0c;C路径上的方点是否会有B 圆方树&#xff1a; void dfs(int x) {dfn[x]low[x]tot; z.push(x); for(int …

【C++】学习STL中的list

❤️前言 大家好&#xff01;&#xff0c;今天为大家带来的一篇博客是关于STL中的list&#xff0c;内容主要包括list的介绍使用、list的模拟实现。以及list与vector的对比。 正文 list的介绍和使用 首先&#xff0c;让我们看看list的文档介绍&#xff1a; list是可以在常数范…

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

目录 一. 前言 二. 面向对象与面向过程 2.1 面向过程 2.2 面向对象 三. 类的基础知识 3.1 类的引入 3.2 类的定义 3.3 成员变量的命名规则 3.4 封装 3.5 类的访问限定符 3.6 类的作用域 3.7 类的实例化 四. 类的对象模型 4.1 类对象的大小 4.2 类对象的存储方式 …

红队打靶:Narak打靶思路详解(vulnhub)

目录 写在开头 第一步&#xff1a;主机发现与端口扫描 第二步&#xff1a;Web渗透 第三步&#xff1a;tftp渗透 第四步&#xff1a;webdav利用 第五步&#xff1a;寻找敏感文件初步提权 第六步&#xff1a;motd利用提权 总结与思考 写在开头 本篇博客在自己的理解之上…

Windows下Redis的安装和配置

文章目录 一,Redis介绍二,Redis下载三,Redis安装-解压四,Redis配置五,Redis启动和关闭(通过terminal操作)六,Redis连接七,Redis使用 一,Redis介绍 远程字典服务,一个开源的,键值对形式的在线服务框架,值支持多数据结构,本文介绍windows下Redis的安装,配置相关,官网默认下载的是…

yo!这里是c++中的继承

目录 前言 概念定义 基类与派生类对象转换 作用域 派生类的默认成员函数 与友元&&与静态成员 菱形继承及菱形虚拟继承 多继承 菱形继承 虚拟继承 1.介绍 2.原理 继承总结 后记 前言 封装、继承、多态作为c的三大特性&#xff0c;在学完封装的有关内容之后…

OAuth2.0二 JWT以及Oauth2实现SSO

一 JWT 1.1 什么是JWT JSON Web Token&#xff08;JWT&#xff09;是一个开放的行业标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种简介的、自包含的协议格式&#xff0c;用于在通信双方传递json对象&#xff0c;传递的信息经过数字签名可以被验证和信任。JW…

python借助isinstance(item, (int, float))提取列表中的数字

如下一个列表[1,2,3,23, ,123] 借助isinstance(item, (int, float)) List [1,2,3,23, ,123] numbers [] # 遍历原始列表 for item in List:# 检查每个元素是否为数字&#xff08;整数或浮点数&#xff09;if isinstance(item, (int, float)):# 如果是数字&#xff0c;则添加…

Eclipse的安装(NEW~)

艾米&#xff0c;我擅长做很多事&#xff0c;但忘记你你并非其中一件。 随着IntelliJ IDEA在Java开发领域越来越广泛的被使用&#xff0c;Eclipse似乎快要退出舞台了。不过作为一款开源免费并拥有悠久历史的Java 开发IDE&#xff0c;总会有一批铁粉支持它&#xff0c;惦记着它。…

Ubuntu 20.04 LTS 安装Kubernetes 1.26

1、环境配置 (1)添加主机名称解析记录 cat > /etc/hosts << EOF 192.168.44.200 master01 master01.bypass.cn 192.168.44.201 node01 node01.bypass.cn 192.168.44.202 node02 node02.bypass.cn EOF(2)禁止K8s使用虚拟内存 swapoff -a sed -ri s(.*swap.*)#\1…

新手入门C语言安装IDE教程(以CLion,CodeBlocks,小熊猫)

前言 当时自己入门c语言时候老师让使用codeblocks&#xff0c;但是这玩意过于离谱了。 所以如果不是强求的话还是不建议codeblocks 个人推荐&#xff1a; 新手期刚学c语言: 可以先用用小熊猫c&#xff08;汉化版的devcpp&#xff09;然后下载个CLion&#xff08;Vscode你要是…

分享码云上8个宝藏又有价值的开源图片编辑器

如果你需要高效地处理图片&#xff0c;那么这8款实用工具是可以尝试的&#xff01; 它们能够进行一键抠图、放大、拼接、转矢量图、图标自动生成以及等操作&#xff0c;让你的工作效率飞升&#xff01; 在Gitee这个最有价值的开源项目计划是Gitee综合评定出的优秀开源项目的展示…