fn

RUST 0x01 数据类型

自闭症网瘾萝莉.ら 提交于 2019-12-04 01:22:05
RUST 0x01 数据类型 1 变量与可变性 先上两段代码和一段错误信息: fn main() { let x = 5; println!("The value of x is: {}",x); x = 6; println!("The value of x is: {}",x); } error[E0384]: cannot assign twice to immutable variable `x` --> src/main.rs:4:5 | 2 | let x = 5; | - first assignment to `x` 3 | println!("The value of x is: {}", x); 4 | x = 6; | ^^^^^ cannot assign twice to immutable variable fn main() { let mut x = 5; println!("The value of x is: {}",x); x = 6; println!("The value of x is: {}",x); } let是函数式语言中的绑定(binding),而不是赋值(assignment) let →使前者绑定后者,且前者不能再被改变 mut →可变的(mutable) let mut →使前者绑定后者,但前者可以改变 变量与常量间的区别

RUST 0x02 函数与注释与控制流

心不动则不痛 提交于 2019-12-04 01:21:47
RUST 0x02 函数与注释与控制流 1 函数 Rust中的函数采用“蛇形命名法(Snake Case)”,其函数名中只能出现 小写 字母和下划线 _ 。 例如:file_name、 line_number。 调用函数示例: fn main() { println!("Hello, world!"); another_function(); } fn another_function() { println!("Another function."); } 函数可以在 main 的无论前后定义。 函数参数(Parameters) 示例: fn main() { another_function(5, 6); } fn another_function(x: i32, y: i32) { println!("The value of x is: {}", x); println!("The value of y is: {}", y); } 在定义函数时应注意声明参数的数据类型。 多个参数间用 , 分隔。 不同参数的数据类型不必相同。 函数体包括语句和表达式(Statements&Expressions) Statements(没有返回值): 创建变量并绑定数值: let 所以 let x = (let y = 6); 是错误的。 定义函数 Expressions: 数字运算: 5

RUST 0x04 Struct

做~自己de王妃 提交于 2019-12-04 01:21:22
RUST 0x04 Struct 1 定义与实例化(Instantiating)Struct Struct和tuple很像,因为它们都能存储不同的数据类型。但和tuple不同的是,恁需要命名每一个数据。这样做的好处是,struct比tuple更灵活——不需要依靠数据的顺序就能获取某一个特定的值。 例如: struct User { // 以下的每一项叫做域(field) username: String, email: String, sign_in_count: u64, active: bool, } 注意中间用的是 , 而不是 ; 。否则会抛出一个CE。最后一个 , 可以不写。 为了使用我们创建的这个struct,我们需要为它创建一个实例,并以 key: value 来赋值。我们不必按和上面相同的顺序来,如: let user1 = User { email: String::from("someone@example.com"), username: String::from("someusername123"), active: true, sign_in_count: 1, }; 如果想从一个struct中得到某个特定的值,我们可以用 . 。如果实例是可变的,那么我们还可用 . 对某个特定的域赋值,如: let mut user1 = User { email:

关于 JS this

坚强是说给别人听的谎言 提交于 2019-12-03 20:28:23
关于 JS this 1. this 与 普通函数 2. this 与 bind、call、apply 3. this 与 箭头函数 4. this 与 return 4.1 返回 引用对象 4.2 返回 function对象 4.3 返回 数字,值对象 4.4 返回 undefined 4.5 返回 null 1. this 与 普通函数 普通函数 this 永远指向它的调用对象 var obj = { a:10, b:{ a:20, fn:function(){ console.log(this.a); } } } obj.b.fn(); //=> 20 对象 b 调用 fn 函数 this.a 为 20。 var obj2 = { a:10, b:{ fn:function(){ console.log(this.a); } } } obj2.b.fn(); //=> undefined 对象 b 中无 a 字段, this.a 为 undefined。 var obj3 = { a:10, b:{ a:20, fn:function(){ console.log(this); console.log(this.a); } } } var j = obj3.b.fn; j(); //=> window, undefined 这里直接获取里fn对象,没有通过对象去调用

RTT学习之启动流程

Deadly 提交于 2019-12-03 20:21:40
总结RT-Thread的启动流程。 非运行时与运行时的image 文件分别是什么样的,请画下来。是谁将 RW 段中的 RW-data(初始化的全局变量) 搬运到 RAM 中? MDK环境下各种数据段存储的什么数据? 在RT-Thread启动时,关了中断,那么在什么时候开启的中断? 总结自动初始化原理。 总结BSP制作过程。 1 、 RT-Thread 启动流程 这部分启动代码,大致可以分为四个部分: (1) 初始化与系统相关的硬件; (2) 初始化系统内核对象,例如定时器、调度器、信号; (3) 创建 main 线程,在 main 线程中对各类模块依次进行初始化; (4) 初始化定时器线程、空闲线程,并启动调度器。 启动流程中蓝色部分是自动初始化的数据段,使用自动初始化宏导出的函数放置到相应的数据段,在启动流程中对函 数进行遍历初始化。 2 、加载时地址与运行时地址映射 image文件 STM32 在上电启动之后默认从 Flash 启动,启动之后会将 RW 段中的 RW-data(初始化的全局变量) 搬运到 RAM 中,但不会搬运 RO 段,即 CPU 的执行代码从 Flash 中读取,另外根据编译器给出的 ZI 地址和大小分配出 ZI 段,并 将这块 RAM 区域清零。 分散装载配置文件里会有配置,关于code的地址,有两个设置,一个是存储地址( 这个地址配置的是烧写器把代码

js的防抖和节流

大憨熊 提交于 2019-12-03 17:32:21
防抖和节流严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。所以还是很有必要早点掌握的。 节流概念(Throttle) 按照设定的时间固定执行一次函数,比如200ms一次。注意:固定就是你在mousemove过程中,执行这个节流函数,它一定是200ms(你设定的定时器延迟时间)内执行一次。没到200ms,一定会返回,没有执行回调函数的。 主要应用场景有:scroll、touchmove 防抖概念(Debounce) 抖动停止后的时间超过设定的时间时执行一次函数。注意:这里的抖动停止表示你停止了触发这个函数,从这个时间点开始计算,当间隔时间等于你设定时间,才会执行里面的回调函数。如果你一直在触发这个函数并且两次触发间隔小于设定时间,则一定不会到回调函数那一步。 主要应用场景有:input验证、搜索联想、resize 节流实现 思路: 第一次先设定一个变量true,第二次执行这个函数时,会判断变量是否true,是则返回。当第一次的定时器执行完函数最后会设定变量为flase。那么下次判断变量时则为flase,函数会依次运行 从滚动条监听的例子说起 先说一个常见的功能,很多网站会提供这么一个按钮:用于返回顶部。 这个按钮只会在滚动到距离顶部一定位置之后才出现,那么我们现在抽象出这个功能需求-- 监听浏览器滚动事件,返回当前滚条与顶部的距离

async函数

自闭症网瘾萝莉.ら 提交于 2019-12-03 17:01:52
一.什么是async函数 1. 概念 async函数是co(Generator)函数的语法糖。 语法是将Generator函数的*替换为async; yield替换为await; var fnName = async function() { let result = await Promise.resolve(1); console.log(result); //1 } fnName(); // 相当于 const co = require('co'); co(function* fnName() { let result = yield Promise.resolve(1); console.log(result); //1 }) async函数相当于执行器+Generator函数,原理如下: async function fn() { //.... } // 模拟源码实现 function fn() { // run+Generator--等同于co + Generator return run(function* (){ }) } function run(fn) { return new Promise((resolve,reject) => { const gen = fn(); function next(nextFn) { let next; try { next

Python中使用@的理解

易管家 提交于 2019-12-03 14:33:45
Python函数中使用@ 稍提一下的基础 fun 和 fun() 的区别 以一段代码为例: def fun(): print('fun') return None a = fun() #fun函数并将返回值给a print('a的值为',a) b = fun #将fun函数地址赋给b b() #调用b,b和fun指向的地址相同 print('b的值为',b) '''输出 fun a的值为 None fun b的值为 <function fun at 0x00000248E1EBE0D0> ''' 根据输出可以看出, a=fun() 是将函数 fun 的返回值( None )赋给 a ,而 b=fun 是将函数的地址赋给 b ,如果调用函数,需要 b() 类似的,其他内置函数也可以通过这种方法,相当于起了一个同名的函数 >>>a = abs >>>a(-1) 1 除此之外,原来的函数名也被覆盖为其他函数,例如 def fun(): print('fun') abs = fun abs() #输出fun 综上,可以理解为fun,abs在不带括号时为变量,该变量包含了函数在内容的地址 返回函数 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017434209254976 以廖老师的教程为例 def lazy_sum(

Rust入坑指南:有条不紊

浪子不回头ぞ 提交于 2019-12-03 12:18:46
随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了。Rust为我们提供了一套坑务管理系统,方便大家有条不紊的寻找、管理、填埋自己的各种坑。 Rust提供给我们一些管理代码的特性: Packages: Cargo的一个特性,帮助你进行构建、测试和共享crates Crates: 生成库或可执行文件的模块树 Modules 和 use: 用于控制代码组织、范围和隐私路径 Paths: struct、function和module的命名方法 下面我们来具体看一下这些特性是如何帮助我们组织代码的。 Packages和Crates package可以理解为一个项目,而crate可以理解为一个代码库。crate可以供多个项目使用。那我们的项目中package和crate是怎么定义的呢? 之前我们总是通过IDEA来新建项目,今天我们换个方法,在命令行中使用cargo命令来创建。 $ cargo new hello-world Created binary (application) `hello-world` package $ ls hello-world Cargo.toml src $ ls hello-world/src main.rs 可以看到,我们使用cargo创建项目后,只有两个文件,Cargo.toml和src目录下的main.rs。 Cargo

Tensorflow Invalid Argument: Assertation Failed [Label IDs must &lt; n_classes]

匿名 (未验证) 提交于 2019-12-03 10:24:21
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I get an error implementing a DNNClassifier in Tensorflow 1.3.0 with Python 2.7. I got the sample code from the Tensorflow tf.estimator Quickstart Tutorial and I want to run it with my own dataset: 3D coordinates and 10 different classes (int labels). Here is my implementation: #!/usr/bin/env python # -*- coding: utf-8 -*- def ReadLabels(file): #load the labels from test file here labelFile = open(file, "r") Label = labelFile.readlines(); returnL = [[Label[i][j+1] for j in range(len(Label[0])-3)] for i in range(len(Label))] returnLint = list