out相关知识
-
C# out关键词应用C#的out关键词,即是方法内赋值。返回处理后的结果。打个比喻,有一个宽度的需要按比例缩放。标准宽度为88,如宽度大于这个标准宽度的话,按照0.8进行缩放。如果小于标准宽度,输出的结果没变化。此时,你可以写一个方法: public static void ReSizeWidth(double originalWidth, double rate, int standardLength, out double resizeWidth) { resizeWidth = originalWidth;  
-
c#使用 ref 和 out 传递数组(downmoon)c#学习体会:使用 ref 和 out 传递数组(downmoon),希望与大家分享1、与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方为其赋值。例如:public static void MyMethod(out int[] arr) { arr = new int[10]; // 数组arr的明确委派 }2、与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。例如:public static void MyMethod(ref int[] arr) { arr&n
-
Your account has been locked out.Your account has been locked out. Please contact the system administrator for further assistance.Infor Syteline 的sa 帐号锁定在系统里。正常来说,需要等待30分钟,才会自动解锁。这个等待令人觉得漫长,是否有更快的方法,可以在SQL Server App DataBase运行下面script:UPDATE [usernames] SET [unlockdate] = '2010-01-01' WHERE [username] = 'sa'
-
Python3:EOFError: Ran out of input使用pickle.load(f)加载pickle文件时,报错:EOFError: Ran out of input. 可能原因:文件为空。 解决办法:加载非空文件。其他解决办法: 1、加载前判断文件是否为空import osscores = {} # scores is an empty dict alreadyif os.path.getsize(target) > 0: with open(target, "rb") as f: unpickler = pickle.Unpickler(f) # if file is not empty scores will be equal # to the value unpickled
out相关课程
out相关教程
- 1.2 什么是 out 协变点 从上面定义的基本结构来看,实际上协变点就是上面 produce 函数返回值的 T 的位置,Kotlin 中规定一个泛型协变类,在泛型形参前面加上 out 修饰后,那么修饰这个泛型形参在函数内部使用范围将受到限制只能作为函数的返回值或者修饰只读权限的属性。interface Producer<out T> {//在泛型类型形参前面指定out修饰符 val something: T//T作为只读属性的类型,这里T的位置也是out协变点 fun produce(): T//T作为函数的返回值输出给外部,这里T的位置就是out协变点}以上协变点都是标准的 T 类型,实际上以下这种方式其实也是协变点,请注意体会协变点含义:interface Producer<out T> { val something: List<T>//即使T不是单个的类型,但是它作为一个泛型类型修饰只读属性,所以它所处位置还是out协变点 fun produce(): List<Map<String,T>>//即使T不是单个的类型,但是它作为泛型类型的类型实参修饰返回值,所以它所处位置还是out协变点}
- 1.3 out 协变点基本特征 协变点基本特征: 如果一个泛型类声明成协变的,用 out 修饰的那个类型形参,在函数内部出现的位置只能在只读属性的类型或者函数的返回值类型。相对于外部而言协变是生产泛型参数的角色,生产者向外输出 out。
- 1.4 协变 -<code>List<out E></code> 的源码分析 我们在上篇文章中就说过 Kotlin 中的 List 并不是 Java 中的 List, 因为 Kotlin 中的 List 是个只读的 List 不具备修改集合中元素的操作方法。Java 的 List 实际上相当于 Kotlin 中的 MutableList 具有各种读和写的操作方法。Kotlin 中的 List<out E> 实际上就是协变的例子,用它来说明分析协变最好不过了,还记得上篇文章说过的学习泛型步骤二吗,就是通过分析源码来验证自己的理解和结论。通过以下源码均可验证我们上述所说的结论。//通过泛型类定义可以看出使用out修饰符 修饰泛型类型形参Epublic interface List<out E> : Collection<E> { override val size: Int override fun isEmpty(): Boolean override fun contains(element: @UnsafeVariance E): Boolean//咦! 咦! 咦! 和说的不一样啊,为什么还能出现在这个位置,还出来了个@UnsafeVariance 这个是什么鬼? 告诉你,稳住,先不要急,请听我在后面慢慢说来,先暂时保留神秘感 override fun iterator(): Iterator<E>//这里明显能看出来E处于out协变点位置,而且还是泛型类型Iterator<E>出现的,正好验证我们上述所说的协变的变种类型(E为类型实参的泛型类型) override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean public operator fun get(index: Int): E//函数返回值的类型E,这里明显能看出来E处于out协变点位置,正好验证我们上述所说的协变的标准类型(E直接为返回值的类型) public fun indexOf(element: @UnsafeVariance E): Int public fun lastIndexOf(element: @UnsafeVariance E): Int public fun listIterator(): ListIterator<E>//(E为类型实参的泛型类型),为out协变点 public fun listIterator(index: Int): ListIterator<E>//(E为类型实参的泛型类型),为out协变点 public fun subList(fromIndex: Int, toIndex: Int): List<E>//(E为类型实参的泛型类型),为out协变点}源码分析完了,是不是感觉还是有点迷惑啊?就是 E 为啥还能在其他的位置上,还有 @UnsafeVariance 是个什么东西呢?这些疑问先放一放,但是上述至少证明了泛型协变 out 协变的位置是返回值的类型以及只读属性的类型 (这点源码中没有表现出来,但是实际上却是如此啊,这里可以自行查阅其他例子)。
- 3.3 <code>MutableList<*></code> 实际上一个 out 协变投影 MutableList<*> 实际上是投影成 MutableList<out Any?> 类型:我们来分析下为什么会这样投影,我们知道 MutableList<*> 只包含某种特定类型的集合,可能是 String、Int 或者其他类型中的一种,可想而知对于该集合操作需要禁止写操作,不能往该集合中写入数据,无法确定该集合的特定类型,写操作很可能引入一个不匹配类型到集合中,这是一件很危险的事。但是反过来想下,如果该集合存在只读操作,读出数据元素类型虽然不知道,但是始终是安全的。只存在读操作那么说明是协变,协变就会存在保留子类型化关系,也就是读出数据元素类型是不确定类型子类型,那么可想而知它只替换 Any? 类型的超类型,因为 Any? 是所有类型的超类型,那么保留型化关系,所以 MutableList<*> 实际上就是 MutableList<out Any?> 的子类型了。
- 1.1 四则运算 当对两个数组进行四则运算,可以通过运算函数完成,需要注意的是数组必须具有相同的形状或符合数组广播规则。四则运算具体函数说明如下:函数说明add加法运算subtract减法运算,从第一个数组中减去第二个数组multiply数组元素相乘divide除法运算案例创建 2 个数组:arr0 = np.array([1,2,3,4,5])arr1 = np.array([10,20,30,40,50])观察四则运算的调用方法和运算结果。数组相加:np.add(arr0, arr1)out: array([11, 22, 33, 44, 55])数组相减:np.subtract(arr0, arr1)out: array([ -9, -18, -27, -36, -45])数组相乘:np.multiply(arr0, arr1)out: array([ 10, 40, 90, 160, 250])数组相除:np.divide(arr0, arr1)out: array([0.1, 0.1, 0.1, 0.1, 0.1])
- 2. 翻转数组 numpy.transpose 函数用于对换数组的维度。案例调换 arr0 的数组维度,达到转置的效果:np.transpose(arr0)out: array([[100, 4], [ 1, 5], [ 2, 6], [ 3, 7]])类似地,上述案例可以写为:arr0.transpose()out: array([[100, 4], [ 1, 5], [ 2, 6], [ 3, 7]])或者:arr0.Tout: array([[100, 4], [ 1, 5], [ 2, 6], [ 3, 7]])
out相关搜索
-
oauth
object
object c
objective
objective c
objective c基础教程
objective c教程
objectivec
office visio 2003
offsetof
offsetparent
offset函数
okhttp
on on
on time
onbeforeunload
onblur
onclick
oncontextmenu
online