首页 > 其他分享 >【仓颉】入门文档代码圆周率估算代码更正

【仓颉】入门文档代码圆周率估算代码更正

时间:2024-08-04 19:08:00浏览次数:15  
标签:std 顶层 圆周率 仓颉 导入 time Duration import 代码

项目 实现前 实现后
代码组织方式 模块/包 二级结构 包/子包 树形结构
没有父包的包称为 root 包,root 包及其子包(包括子包的子包)构成的整棵树称为 module
编译单元 包(每个子包单独编译)
访问修饰符 public:
可修饰顶层和非顶层成员,包内外可见
default(不写):仅本包内可见
protected:只能修饰 class 的成员,本包内可见、本 class 及其子类可见
private:不能修饰 top-level 成员、仅当前作用域可见
以下所有访问修饰符均可修饰顶层和非顶层成员
public:本 module 内外可见
protected:本 module 和子类型内可见
internal:本包及其子树可见
private:修饰顶层声明时仅本文件内可见,修饰非顶层声明时仅当前类型或扩展定义内可见
package 访问修饰符 package a.b(= public package a.b)
protected package a.b
internal package a.b
import 访问修饰符 public import
import
public import
protected import
internal import
import(= private import)
从 module 导入的语法 from std import time.* 不再有 from 语法,只有 import std.time.* 的语法
多导入的语法 from std import time.*, math.*
import a.*, b.*
import std.{time.*, math.*}
import
导入的语义 from std import time.Duration
可以同时看到 time 和 Duration 这两个符号
import std.time.Duration
只看能看到 Duration 这一个符号
单导入 可以导入顶层声明,不可以导入包名
from std import time // error
from std import time.Duration // OK
可以导入顶层声明、也可以导入包名
import std.time // ok
import std.time.Duration // OK
别名导入 from std import time.* as stdTime.* // OK
from std import time.Duration as stdDuration // OK
import std.time.* as stdTime.* // error
import std.time.Duration as stdDuration // OK
别名导入的作用域 和当前包顶层声明处于同一作用域
from std import time.Duration as stdDuration
let stdDuration = 1 // error: redefinition
和当前包顶层声明处于不同作用域,且优先级更低,若 shadow 则告警
import std.time.Duration as stdDuration // warning: shadow
let stdDuration = 1 // OK
重复导入并取别名 使用 import as 对导入的声明重命名后,当前包内只能使用别名,无法使用原名
from std import time.Duration // error: time.Duration is renamed
from std import time.Duration as stdDuration
允许使用多条导入语句分别导入原名和重命名
import std.time.Duration
import std.time.Duration as Duration1
import std.time.Duration as Duration2

let _ = Duration.second // OK
let _ = Duration1.second // OK
let _ = Duration2.second // OK
package hello
import std.random.*//from xxx import bbb -> import xxx.bbb
import std.math.*

main(): Int64 {
    const N = 1000000
    var n: UInt32 = 0
    let random = Random()
    for (_ in 0..N) {
        let x = random.nextFloat64()
        let y = random.nextFloat64()
        if ((x - 0.5) ** 2 + (y - 0.5) ** 2 < 0.25) {
            n += 1
        }
    }
    let pi = Float64(n) / Float64(N) * 4.0
    println('pi = ${pi}')
    println('deviation = ${abs(Float64.PI - pi)}')
    println("hello world")
    return 0
}

标签:std,顶层,圆周率,仓颉,导入,time,Duration,import,代码
From: https://www.cnblogs.com/cjjcn/p/18342081

相关文章

  • 从 0 开始安装和运行 Cangjie (仓颉)
    标准方法参照配置开发环境的描述,下载CangjieforDevEcoStudio插件DevEcoStudioNEXTDeveloperBeta2-CangjiePlugin(5.0.3.500)。然后在DevEcoStudioNEXTDeveloperBeta2中从本地磁盘安装插件,选择下载好的"devecostudio-cangjie-plugin-windows-5.0.3.500.zip"......
  • github添加ssh密钥,通过ssh方式推送代码
    左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取python编程资料很多人在使用github的时候,如果还是使用https的方式推送代码的话,可能会发现推送不上去,官方会建议你使用ssh的方式进行代码推送。通过ssh方式推送代码,速度更快,更高效,而且还不用......
  • 优化 PySpark 代码:在保持功能的同时避免 For 循环并减少
    frompyspark.sqlimportWindowfrompyspark.sqlimportfunctionsasFimportfunctoolsfromdatetimeimportdatetimedefgenerate_new_rating_data(w_df,count_a,distinct_a,flag_a,suffix):ifflag_a:w_df=w_df.where((w_df[f&qu......
  • Digitwise_addition:超出限制:如果超出 -> 代码超时
    我正在研究kata。按位加法是一种特殊的加法,它不是通常向数字加1,而是向该数字的每个数字加1。如果数字是9,我们将其替换为10,而不保留到下一个数字。示例123->234任务编写一个接受两个数字n和k的函数,并在应用数字加法k次后输出n中的位数。由于答......
  • 网易易盾图标点选验证码识别代码
    简介网易图标点选一直都是一个大难题,如上图所示。难点之一是图标变幻莫测,很难刷出有重复的图标,所以使用传统等等方式去标注、识别具有较大的难度。经过我们大量的数据标注,终于完成了这款验证码的识别。目前我们提供两种识别方:原图识别、截图识别。1.1原图识别需要通过......
  • 代码优化:使用C语言重构单片机汇编启动代码
    目录前言实现思路单片机启动流程汇编语言分析开发环境代码分析总结前言在近期的工作需求中,我需要对实时操作系统(RTOS)的底层代码进行一些必要的调整。为此,我重新深入研究了ARM架构的相关知识点。在这一过程中,我回顾了之前一直让我感到困惑的一个技术问题:在几乎所有的......
  • 基于ssm+vue.js+uniapp的宠物领养系统附带文章和源代码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Rust项目的代码组织
    学习一种编程语言时,常常优先关注在语言的语法和标准库上,希望能够尽快用上新语言来开发,我自己学习新的开发语言时也是这样。不过,想用一种新的语言去开发实际的项目,或者自己做点小工具的话,除了语言本身之外,了解它在项目中如何组织代码也是至关重要的。毕竟在实际项目中,不可能像学习......
  • Java简单宠物系统案例和代码实现(控制台输出 “推荐小白练习”)
    文章目录案例要求1.主程序入口2.用户注册3.用户登录4.宠物管理界面5.寄养宠物6.领养宠物7.查看宠物列表8.退出程序注意事项代码实现1.数据结构定义Account.javaPet.java2.功能实现Main.java案例要求1.主程序入口初始化:创建账号数组和宠物数组来......
  • 一个简洁、高效、可扩展的企业级低代码开发平台,前后端分离,支持国密加密(附源码)
    前言在当今数字化转型的浪潮中,企业面临着快速开发和部署应用的挑战。传统的开发模式往往因为其繁琐的流程、高昂的成-本和僵化的架构而无法满足市场需求。开发者常常受限于复杂的系统配置、安全问题、以及不同数据库的兼容性问题。这些痛点不仅拖慢了开发进度,也限制了企业的创......