Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BNB丨BSC链项目系统开发DAPP模式分析解析方案

BNB丨BSC链项目系统开发DAPP模式分析解析方案

原创
作者头像
开发v_StPv888
发布于 2022-11-07 06:25:44
发布于 2022-11-07 06:25:44
39200
代码可运行
举报
文章被收录于专栏:makingmaking
运行总次数:0
代码可运行

  作为一种可能的Web3.0底层技术,区块链以去中心化、不可篡改、可溯源等特点,构建起数字经济时代的全新信任体系。

  从技术角度分析,区块链让数字资产价值流转的每一个节点都公开透明、有迹可循且不可篡改,这将会让Web3.0时代的一切交易变得更加真实可信。

定义包的规范应位于源文件的顶部

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package my.demo
import java.awt.Rectangle
import java.util.*

Kotlin 中的注释

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// --- 单行注释---
/* --- 多行注释 ---*/

定义函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 带有两个Int参数、返回Int的函数:
fun sum(a:Int, b:Int):Int{
    return a + b  // 返回的是Int
}

// 主函数入口,程序执行:定义函数
fun main(args:Array<String>){
    print("sum of 3 and 5 is ")  // print 打印不换行
    println(sum(3,5))  // println 打印换行
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 将表达式作为函数体、返回值类型自动推断的函数:
fun sum(a:Int, b:Int) = a + b

fun main(args:Array<String>){
    println("sum of 19 and 23 is ${sum(19, 23)}")  // ${} 占位
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 函数返回无意义的值
fun print_sum(a:Int, b:Int): Unit{
    println("sum of $a and $b is ${a + b}")  // $ 占位
}

fun main (args: Array<String>){
    print_sum(-1, 8)
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //  Unit 返回类型可以省略:
fun printSum(a:Int, b:Int){
    println("sum of $a and $b is ${a + b}")
}

fun main(args: Array<String>){
    printSum(-1, 8)
}

定义变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 一次赋值--只读--局部变量
fun main(args: Array<String>){
    val a: Int = 1 // 立即赋值
    val b = 2  // 自动推断出 ‘Int’ 类型
    val c:Int  // 如果没有初始值类型不能省略
    c = 3
    println("a = $a, b = $b, c = $c")
}

// 可变变量
fun main(args: Array<String>){
    var x = 5  // 自动推断出“Int”类型
    x += 1
    println("x = $x")
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 顶层变量:
val PI = 3.14
var x = 0
fun incrementX(){
    x += 1
}

fun main(args: Array<String>){
    println("x = $x, PI = $PI")
    incrementX()
    println("incrementX()")
    println("x = $x, PI = $PI")
}
/*变量还可以作为属性和字段使用 */

使用字符串模板

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main(args:Array<String>){
    var a = 1
    // 模板中的简单名称
    val s1 = "a is $a"
    a = 2
    // 模板中的任意表达式:
    val s2 = "${s1.replace("is", "was")}, but now is $a"
    println(s2)
}

使用条件表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun maxOf(a:Int, b:Int):Int{
    return if (a > b){
        a
    }else{
        b
    }
}
fun main(args:Array<String>){
    println("max of 0 and 42 is ${maxOf(0, 42)}")
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用if作为表达式:
fun moxOf(a:Int, b:Int) = if (a > b) a else b
fun main(args: Array<String>){
    println("maxOf of 0 and 42 is ${maxOf(0, 42)}")
}

使用可空值及null检测

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 当变量的值可以为null的时候,必须在声明处的类型后添加? 用来标识该应用可为空。
fun parseInt(str:String):Int?{
    // ......
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用返回可空值的函数
fun parseInt(string: String):Int?{
    return string.toIntOrNull()

fun printProduct(arg1:String, arg2:String){
    val x = parseInt(arg1)
    val y = parseInt(arg2)
    // 直接使用 x * y 会导致编译器错误,因为他们可能为null
    if (x == null) {
        println("Wrong number format in arg1:'$arg1'")
        return
    }
    if (y == null){
        println("Wrong number format in arg2: '$arg2'")
        return
    }
}
    // 在空检测后,x 和 y自动转换为非空值(non-nullable)
    println(x * y)
}

fun main(args:Array<String>){
    printProduct("6", "7")
    printProduct("a", "7")
    printProduct("6", "b")
    printProduct("a", "b")
}

使用类型检测及自动类型转换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* is 运算符检测一个表达式是否某类型的一个实例。
* 如果一个不可变的局部变量或属性已经判断出为某类型
* 那么检测后的分支中可以直接当作该类型使用,无需显示转换*/
fun getStringLength(obj: Any):Int?{
    if (obj is String) {
        // 'obj'在条件分支内自动转换成'String'
        return obj.length
    }
    // 在离开类型检测分支后,'obj'仍然是'Any'类型
    return null
}
fun main(args:Array<String>){
    fun printLength(obj: Any){
        println("'$obj' string length is ${getStringLength(obj) ?: " ... err, not a string"}")
    }
    printLength("Incomprehensibilities")
    printLength(1000)
    printLength(listOf(Any()))
}

使用for循环

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main(args:Array<String>){
    val items = listOf("apple", "banana", "kiwi")
    for (item in items){
        println(item)
    }
}

使用while表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main(args: Array<String>){
    val items = listOf("apple", "banana", "kiwi")
    var index = 0
    while (index < items.size){
        println("item at $index is ${items[index]}")
        index++
    }
}

使用when表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun describe(obj:Any):String =
        when(obj){
            1          -> "One"
            "Hello"    -> "Greeting"
            is Long    -> "Long"
            !is String -> "Not a string"
            else       -> "Unknown"
        }

fun main(args:Array<String>){
    println(describe(1))
    println(describe("Hello"))
    println(describe(1000L))
    println(describe(2))
    println(describe("other"))
}

使用区间range

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用 in 运算符来检测某个数字是否在指定区间内:
fun main(args:Array<String>){
    val x = 10
    val y = 9
    if (x in 1..y+1){
        println("fits in range")
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 检测某个数字是否在指定区间外:
fun main(args:Array<String>){
    val list = listOf("a", "b", "c")
    if (-1 !in 0..list.lastIndex){
        println("-1 is out of range")
    }
    if (list.size !in list.indices){
        println("list size is out of valid list indices range too")
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 区间迭代
fun main(args:Array<String>){
    for (x in 1..5){
        print(x)
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 数列迭代
fun main(args:Array<String>){
    for (x in 2..10 step 2){
        print(x)
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kotlin语言基础入门:Kotlin简介
Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。
Android_anzi
2022/02/09
9490
开心档-Kotlin 基础语法
以上例中 test() 的全名是 com.kxdang.main.test、Runoob 的全名是 com.kxdang.main.Runoob。
爱学iOS的小麦子
2023/02/08
7140
Kotlin之基本语法
在今年Google IO大会上Google已经明确kotlin作为为Android第一官方语言的地位。我相信Google的决意,就像当初毫不犹豫的抛弃eclipse转向as,kotlin已经是不可避免的大势所趋了。再加上Kotlin与java代码完全兼容,所以从Java转向Kotlin是一件很容易的事情。Kotlin语法简单,它融合了当前多种语言的优势,可以是一门明星语言。 下面就Kotlin的一些基本语法做一个讲解。 包 一个源文件往往以包声明开始:源文件的所有内容(比如类和函数)都被包声明并包括。 pa
xiangzhihong
2018/01/26
1.1K0
Kotlin 基础语法
以上例中 test() 的全名是 com.runoob.main.test、Runoob 的全名是 com.runoob.main.Runoob。
zhangjiqun
2024/12/16
1410
《Kotlin 程序设计》第四章 Kotlin 语法基础
Kotlin 可以省略变量定义的类型声明,但是在定义参数列表和定义返回值类型时则必须明确指定类型(这个类型推断Kotlin居然没做,这地方用起来比Scala,Groovy要繁琐点)。
一个会写诗的程序员
2018/08/17
1.5K0
Kotlin与Java语法对比(首次了解)
变量的声明。 //java int a; int a=0; final a=1; //kotlin var a var a : Int var a=0 var a : Int =0 val a=1 字符串拼接: //java int a=0; int b=1; String str="a="+a+",b="+b //kotlin var a=0 var b=1 var str:String ="a= $a,b= $b" 函数构建 //java public int createFunction(int a,
饮水思源为名
2018/11/29
6890
Kotlin学习笔记(二)-程序结构(上 )
上节我们主要讲了Kotlin的数据类型,这节我们主要从程序结构,包括方法,类成员,运算符的角度去认识Kotlin
g小志
2019/12/19
6540
给 Java 开发者的 Kotlin 快速上手教程(Kotlin for Java Developers)v0.1
1995年,当年如日中天的Sun公司发布了Java语言,引起了巨大的轰动,与当时主流的C语言和Basic语言比起来,Java语言简单、面向对象、稳定、与平台无关、解释型、多线程、动态等特点,就像是打开了一个新的世界,一时间风靡全球,云集者众,微软为了模仿Java搞出C#语言,Netscape为了赶时髦硬塞出一个JavaScript语言,IBM则捏着鼻子做了Java IDE Eclipse(日蚀,呵呵)。直到现在,Java在编程世界里还占据着举足轻重的地位,Andy Rubin在开发Android系统时,也很自然地采用了Java和C++(C++负责NDK开发)作为开发语言。
一个会写诗的程序员
2018/12/07
1.1K0
给 Java 开发者的 Kotlin 快速上手教程(Kotlin for Java Developers)v0.1
Kotlin 轻量级Android开发
它由Jetbrains创建,而Jetbrains则是诸多强大的工具(如知名的Java IDE IntelliJ IDEA)背后的公司。Kotlin是一门非常简单的语言,其主要目标之一就是提供强大语言的同时又保持简单且精简的语法。
Yif
2019/12/26
9720
【Android进阶】Kotlin 条件控制
when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。
易寒
2022/01/17
2560
《Kotlin 程序设计》第十二章 Kotlin的多线程
Kotlin 1.1 introduced coroutines, a new way of writing asynchronous, non-blocking code (and much more). In this tutorial we will go through some basics of using Kotlin coroutines with the help of the kotlinx.coroutines library, which is a collection of helpers and wrappers for existing Java libraries.
一个会写诗的程序员
2018/08/17
3.4K0
Kotlin基本语法和使用技巧
take是从集合中取前几个元素 takeLast是从集合中取后几个元素 sortedBy 排序 过滤list,符合过滤条件的就是过滤结果 filterNot把符合条件的过滤掉,剩下的是结果。这个操作和 filter 相反 slice,取集合中的某一部分
六月的雨
2020/03/27
8940
Scala基础入门(七)方法、类、对象详解
使用 def 关键字定义方法, 后面跟 方法名 和 小括号中的 参数列表 。 参数列表后面跟一个 冒号 和 方法的返回结果类型, 返回结果类型后面是一个 等号,表示下面是方法体, 方法体用一个 花括号 包含。 这和前面的多行表达式一样, 方法体可以看作一个 表达式。
青山师
2023/05/04
5930
《Kotlin极简教程》第四章 Kotlin基础语法表达式Null Check循环枚举遍历Map拼接字符串基本类型
在Kotlin中,所有东西都是对象,所以我们可以调用成员函数和属性的任何变量对象。有些类型是内置的,他们的实现被优化过, 但是用户看起来他们就像普通的类. 本节我们会描述这些类型: numbers, characters, booleans 和 arrays.
一个会写诗的程序员
2018/08/20
8930
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
人与人之间通过语言来交流沟通,互相协作。人与计算机之间怎样“交流沟通”呢?答案是编程语言。一门语言有词、短语、句子、文章等,对应到编程语言中就是关键字、标识符、表达式、源代码文件等。通常一门编程语言的基本构成如下图所示
一个会写诗的程序员
2018/08/17
2.7K0
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
【C++】:bind绑定器和function函数对象机制
在C++中工程实践中,bind绑定器和function函数对象非常常用,而且bind+function简直就是无敌的存在。本篇博客中,我们力求用最小的成本搞懂它们,让你用起来得心应手
破晓的历程
2024/10/09
2070
Kotlin和Swift横向对比
kotlin面世已经有不短的时间了,从安卓宣布kotin为安卓官方开发语言开始,kotlin的热度开始猛涨,作为一个从swift1.0开始写iOS程序的开发者自然会对这两门语言做一些对比,本篇文章主要介绍两个语言的基础语法的对比。
Leacode
2018/08/22
1.1K0
Kotlin语法基础
定义常量与变量 可变变量定义:var 关键字 var <标识符> : <类型> = <初始化值> 不可变变量定义:val 关键字,只能赋值一次的变量(类似Java中final修饰的变量) val <标识符> : <类型> = <初始化值> 字符串模板 $ 表示一个变量名或者变量值 $varName 表示变量值 ${varName.fun()} 表示变量的方法返回值: var a = 1 // 模板中的简单名称: val s1 = "a is $a"  a = 2 //
黄林晴
2019/01/10
6180
Kotlin难点
所有函数类型都有一个圆括号括起来的参数类型列表以及一个返回类型:(A, B) -> C 表示接受类型分别为 A 与 B 两个参数并返回一个 C 类型值的函数类型。 参数类型列表可以为空,如 () -> A,Unit 返回类型不可省略。
六月的雨
2023/05/26
4750
Kotlin难点
Kotlin修炼指南(二):lambda表达式的精髓
lambda表达式是Kotlin函数式编程的一个重要概念,要想掌握函数式编程,就必须熟练掌握lambda表达式,并掌握它的各种写法和实现,这些都是掌握函数式编程的基础。
用户1907613
2019/11/10
1.7K0
相关推荐
Kotlin语言基础入门:Kotlin简介
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验