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

仓颉刷题遇到问题汇总

背景:c嵌入式工程师,碎片时间通过刷题学习仓颉自用记录贴,菜勿喷

1、怎么声明数组

var arr:Array<Int64>=[0,0]

声明格式:
var/let name : type<subType> = initVal
var变量 let字面量
type一堆,文档写的也很乱,subType用在Type = Array/Range时,subType可以是任何type

整型浮点布尔字符字符串元组数组区间Unitnothing
Int8、Int16、Int32、Int64 和 IntNative,编码长度为 8-bit、16-bit、32-bit、64-bit 和平台相关大小的有符号整数值的类型。 UInt8、UInt16、UInt32、UInt64 和 UIntNative,编码长度为 8-bit、16-bit、32-bit、64-bit 和平台相关大小的无符号整数值的类型。Float16、 Float32 和 Float64,编码长度为 16-bit、 32-bit 和 64-bit 的浮点数的类型。Float16、 Float32 和 Float64 分别对应 IEEE 754 中的半精度格式(即 binary16)、单精度格式(即 binary32)和双精度格式(即 binary64)BoolRuneString元组(Tuple)可以将多个不同的类型组合在一起,成为一个新的类型。元组类型使用 (T1, T2, …, TN) 表示,其中 T1 到 TN 可以是任意类型,不同类型间使用逗号(,)连接。元组至少是二元,例如,(Int64, Float64) 表示一个二元组类型,(Int64, Float64, String) 表示一个三元组类型仓颉使用 Array 来表示 Array 类型。T 表示 Array 的元素类型,T 可以是任意类型Range 表示。当 T 被实例化不同的类型时(要求此类型必须支持关系操作符,并且可以和 Int64 类型的值做加法),会得到不同的区间类型,如最常用的 Range 用于表示整数区间。每个区间类型的实例都会包含 start、end 和 step 三个值。其中,start 和 end 分别表示序列的起始值和终止值,step 表示序列中前后两个元素之间的差值(即步长);start 和 end 的类型相同(即 T 被实例化的类型),step 类型是 Int64,并且它的值不能等于 0。对于那些只关心副作用而不关心值的表达式,它们的类型是 Unit。例如,print 函数、赋值表达式、复合赋值表达式、自增和自减表达式、循环表达式,它们的类型都是 Unit。Unit 类型只有一个值,也是它的字面量:()。除了赋值、判等和判不等外,Unit 类型不支持其他操作。Nothing 是一种特殊的类型,它不包含任何值,并且 Nothing 类型是所有类型的子类型。break、continue、return 和 throw 表达式的类型是 Nothing,程序执行到这些表达式时,它们之后的代码将不会被执行。其中 break、continue 只能在循环体中使用,return 只能在函数体中使用。

官方文档
https://developer.huawei.com/consumer/cn/doc/cangjie-guides-V5/2_3_u57fa_u7840_u6570_u636e_u7c7b_u578b-V5

2、for循环遍历数组

for(_ in left…right) // 从left到right-1循环,左闭右开
在这里插入图片描述

for(a in 0..10){print(a)
}

标准输出
在这里插入图片描述

0123456789

3、怎么判空
题目给出

/*** Definition for singly-linked list.* public class ListNode {*     public var val: Int64*     public var next: ?ListNode*     public init() {*         val = 0*         next = None*     }*     public init(val: Int64) {*         this.val = val*         next = None*     }* }*/class Solution {func addTwoNumbers(l1: ?ListNode, l2: ?ListNode): ?ListNode {}
}

第一下想到的是弄一个ListNode的指针,但是不知道仓颉怎么写if(p == null)这个表达式

最后结论:
可以用运算符

吐槽:cangjie很多option的类型,导致不能直接赋值,很蠢

/*** Definition for singly-linked list.* public class ListNode {*     public var val: Int64*     public var next: ?ListNode*     public init() {*         val = 0*         next = None*     }*     public init(val: Int64) {*         this.val = val*         next = None*     }* }*/class Solution {func addTwoNumbers(l1: ?ListNode, l2: ?ListNode): ?ListNode {var p = l1var q = l2var needPlus1 = falsevar nextNeedPlus1 = falsevar res:ListNode = ListNode(0)var tmp:ListNode = reswhile(true){var needBreak = truevar num:Int64 = 0if(p?.val != None){needBreak = falsenum += (p??throw Exception("222")).valp = (p??break).next}if(q?.val != None){needBreak = falsenum += (q??throw Exception("333")).valq = (q??break).next}if(nextNeedPlus1){needPlus1 = truenextNeedPlus1 = false}if(needPlus1){needPlus1 = falsenum += 1}if(num >= 10){nextNeedPlus1 = truenum -= 10}if(needBreak){if(num != 0){tmp.next = ListNode(1)tmp = (tmp.next??throw Exception("444"))}break}tmp.next = ListNode(num)tmp = (tmp.next??throw Exception("555"))}return res.next}
}

http://www.mrgr.cn/news/55416.html

相关文章:

  • 从零学习大模型(一)-----GPT3(上)
  • 《嵌入式最全面试题-Offer直通车》目录
  • JSP + Servlet:构建动态Web应用的经典组合
  • qtcreator 仿制vscode黑色背景主题monokai
  • 智融SW5106 无线充电发射端全集成 SOC
  • SqlUtils 使用
  • Linux——shell 编程基础
  • 用AI自动化视频创作,轻松解放双手!!
  • 一款开源屏幕共享神器,有浏览器就能投屏,爽歪歪了
  • robocopy 拷贝远程服务器文件夹
  • Open3D-Geometry-12:ISS固有形状特征检测模块
  • excel导出加密
  • Win安装Redis
  • Fastapi之model_validator
  • 基于springboot招聘信息管理系统设计与实现(源码+定制+开发)
  • 金九银十互联网大厂Java高频面试题(2024最新含答案)
  • HSIC规范V1.0
  • 易语言注册机速成开发撸彩网论坛分享项目
  • 【JS逆向百例】某赚网 WebSocket 套 Webpack 逆向分析
  • Rust编程语言变量的所有权(ownership)
  • Sqlite3 操作笔记
  • CTFHUB技能树之XSS——过滤空格
  • 安达发|日化品APS智能排产系统的物料齐套欠料分析
  • 【已解决】Eclipse下载安装和环境配置 超详细教程 小白
  • 微服务的一些基本概念
  • Java程序员最好的AI框架,伴随着Spring到来了