首页 > 编程语言 >仓颉_Cangjie-函数式编程

仓颉_Cangjie-函数式编程

时间:2024-11-15 17:34:18浏览次数:1  
标签:函数 编程 Cangjie 关键字 仓颉 func 类型 lambda 定义

函数定义

C     C语言中,函数的声明告诉编译器函数的名称、返回类型和参数列表。函数的定义则提供了函数的实际体
C++   返回类型 函数名(参数列表) {// 函数体// 执行的操作// 返回返回类型的值}
Java  函数的定义分为函数的声明和函数的实现
Rust   使用 fn   关键字定义函数。函数的定义使用 fn关键字,后跟函数名、参数列表、返回类型和函数体
仓颉   使用 func 关键字 来表示函数定义的开始
Golang 使用 func function_name( [parameter list] ) [return_types] {
Swift ,使用 func 关键字定义。函数的基本结构包括函数名、参数列表、返回类型和函数体
Kotlin,使用 fun  关键字来定义一个函数
Scala, 使用 def 关键字定义的
python 使用 def 关键字 
JavaScript 使用关键字 function 定义函数。 函数可以通过声明定义,也可以是一个表达式
R语言  使用 function 关键字 来创建一个R函数 function_name <- function(arg_1, arg_2, ...) {  Function body }

 声明-定义-实现-调用-嵌套
    参数列表 --固定参数 变参  位置参数 命名参数 默认参数 生命周期 
    函数体--
    返回值 返回值类型
 函数调用--实参和形参 (作为参数,可以在传递时再定义其内容)
 函数类型---函数类型由函数的参数类型和返回类型组成,参数类型和返回类型之间使用 -> 连接
     函数类型是 () -> Unit,表示该函数没有参数,返回类型为 Unit
	 函数类型作为 参数类型 返回值类型  变量类型
 Lambda 表达式定义   之前为参数列表 =>  之后为 lambda 表达式体
闭包-- 变量捕获 
重复定义与函数重载 函数重载决议

尾随 lambda 
表示 数据流向的中缀操作符 |> (称为 pipeline)
表示 函数组合的中缀操作符 ~> (称为 composition)
变长参数

一等公民:函数可以:  it can be passed as a parameter, returned from a subroutine, or assigned into a variable.
  函数类型作为 参数类型 返回值类型  变量类型
动态改变函数实现的效果 

(1)Static Scope
   作用域和生存期时,函数里的本地变量只能在函数内部访问,
    函数退出之后,作用域就没用了,它对应的栈桢被弹出,作用域中的所有变量所占用的内存也会被收回
(2)闭包(Closure)对库的编写者来讲,它能隐藏内部实现细节
    内层函数一直访问它环境中的变量,不管外层函数退出与否
	  闭包是为了让函数能够在函数能作为值传递下继续运行所提供的一个方案
 	Dynamic Scope
	闭包的内在矛盾是运行时的环境和定义时的作用域之间的矛盾
 作用域和生存期这样的话语体系去解读
 
 操作符函数时需要在 func 关键字前面添加 operator 修饰符
 
 在编译时执行计算  在运行时执行
    public func map<T, R>(transform: (T) -> R): (Iterable<T>) -> Iterator<R>

从代码中学习语法

遍历区间 for-in 表达式可以遍历区间类型实例
区间类型字面量 左闭右开”区间的格式是 start..end : step

    定义函数-调用函数
    lambda表达式 以及 尾随 lambda 当函数调用有且只有一个 lambda 实参时,我们还可以省略 (),只写 lambda
    pipeline 表达式来简化描述

std.core    
    Rune 功能:表示 unicode 字符集中的字符	 
	   字符类型使用 Rune 表示,可以表示 Unicode 字符集中的所有字符
	     符 r 开头,后跟一个由一对单引号或双引号包含的字符。
	String 字符串类型使用 String 表示,用于表达文本数据,由一串 Unicode 字符组合而成	 struct String 
	    public func split(str: String, removeEmpty!: Bool = false): Array<String>
	Array<T> 数组类型 []
	
	func isNone()
	func isSome()
	 std 模块 » std.core 包 » 结构体 » func indexOf(String)
	public func isSome(): Bool 功能:判断当前实例值是否为 Some
	   	public enum Option<T> {
          | Some(T)
          | None
          }	
	
std.collection	
  map<T, R>((T) -> R)	创建一个映射。	
  collectArray<T>(Iterable<T>)	将一个迭代器转换成 Array 类型。
  flatten<T, R>(Iterable<T>) where T <: Iterable<R>	将嵌套的迭代器展开一层	

参考

https://gitcode.com/Cangjie/Cangjie-Examples/blob/main/Functional/string_split_2.cj

标签:函数,编程,Cangjie,关键字,仓颉,func,类型,lambda,定义
From: https://www.cnblogs.com/ytwang/p/18548338

相关文章

  • CSAPP 并发编程
    frompixiv前置知识进程逻辑控制流(简称逻辑流)CSAPPP508:一系列的程序计数器PC的值唯一地对应于包含在程序的可执目标文件中的指令或包含在运行时动态链接到程序的共享对象指令。这个PC值的序列叫逻辑控制流一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这两个流被......
  • Python并发编程入门:使用concurrent.futures与asyncio
    Python并发编程入门:使用concurrent.futures与asyncio在现代应用中,并发编程已成为一种提升性能和效率的重要手段。Python提供了多种实现并发的方式,尤其是concurrent.futures和asyncio,分别适用于不同的并发场景。本文将带你深入了解这两种并发编程方式,帮助你轻松上手并......
  • 深入探索 C++11 第一弹:现代 C++ 编程的基石与革新
    1、C++的发展历史C++11是C++的第⼆个主要版本,并且是从C++98起的最重要更新。C++11对C++语言的发展具有深远的影响,它使C++语言更加现代化、高效、灵活和易于使用,为开发者提供了更强大的工具和更好的编程体验,推动了C++在各个领域的广泛应用和持续发展。话不多说,下......
  • 第16章 Shell企业编程基础
    说到Shell编程,很多从事Linux运维工作的朋友都不陌生,都对Shell有基本的了解,初学者可能刚开始接触Shell的时候,有各种想法,感觉编程非常困难,SHELL编程是所有编程语言中最容易上手,最容易学习的编程脚本语言。本章向读者介绍Shell编程入门、Shell编程变量、If、While、For、Case......
  • 仓颉原生应用编程语言教程(第5期)
    泛型视频:KCKCJY在现代软件开发中,泛型编程已成为提高代码质量、复用性和灵活性的关键技术。泛型作为一种参数化多态技术,允许开发者在定义类型或函数时使用类型作为参数,从而创建可适用于多种数据类型的通用代码结构。泛型带来的好处包括:代码复用:能够定义可操作多种类型的通用算法......
  • 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
    本篇将继续讲解PTA平台上的题目L1-003个位数统计,通过对数字的处理与统计,掌握基础的字符串操作与数组计数功能,进一步提升Cangjie编程语言的实际应用能力。关键词PTA刷题数字统计数组操作字符串处理编程技巧一、L1-003个位数统计题目描述:给定一个正整数,统计该数字中......
  • Java 网络编程----初探Servlet
    JaveWeb是java面向web开发的相关技术,他是相关技术的统称,并不是指某一个单一的技术。在我之前的博客中(Java网络编程----通过实现简易聊天工具来聊聊BIO模型https://www.cnblogs.com/jilodream/p/17405923.htm),就已经写到过java可以作为一个服务器(如TCP/UDP),接收外部的请求。如使用T......
  • python多线程和网络编程
    一、多线程1.进程、线程和并行执行学习目标:了解什么是进程、线程,了解什么是并行执行进程比作公司,线程比作员工,多线程并行执行就比作公司的不同员工在同一时间去做不同的事。总结2.多线程编程学习目标:掌握使用threading模块完成多线程编程当你想实现唱歌和跳舞一......
  • xshell7上实现MapReduce初级编程实践:对给定的表格进行信息挖掘
      实验环境:操作系统:Linux(Centos7);  Xsell7Hadoop版本:3.4.0(这里的版本根据自己的修改,可能小部分版本的Hadoop不适用于本文实验)下面给出一个child-parent的表格,要求挖掘其中的父子辈关系,给出祖孙辈关系的表格。输入文件内容如下:(保证之间空格为1,否则可能输出会出错)chi......
  • GPU编程
    来源:https://worktile.com/kb/p/2155928 gpu编程有什么用? 图形处理单元(GPU)编程具有多种用途,主要包括:1、加速大规模计算任务、2、图形和视频渲染、3、深度学习和机器学习。GPU编程在深度学习和机器学习领域尤为重要。它允许数据科学家和研究人......