static函数相关知识
-
文件上传时判断是否为图片好吧,为Uploadify的上传方法,添加一些判断。如果用户选择的不是图片文件,取消与提示给用户。打开Utilities\ImageUtility.cs: 添加#53行的static函数IsImage(),它在这个类中,是方法重载。传入的参数为HttpPostedFileBase。我们在控制器中,写一个上传文件的方法:第#72行代码是本示例中,核心代码。判断是否为图片。
-
深入java函数重载深入java函数重载 先思考几个问题:有这个一个重载的函数:public static void chongZai1(ArrayList list){ System.out.println("ArrayList ");}public static void chongZai1(AbstractList list){ System.out.println("AbstractList ");}public static void chongZai1(List list){ System.out.println("List ");}1. p
-
main方法的使用-主函数package com.yz; public class TestMain { //主方法是程序的入口 //main作为一个普通的函数来输出参数的值 public static void main(String[] args) { for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } } 例子2: package com.yz; //在两个类中定义另个main函数,用其中的一个来调用另一个。 public class TestMain1 { public static void main(String[] args) { main.main(new String[100]); } } class main{ public static void
-
返回标量CLR自定义函数昨天有学习了返回表自定义函数《CLR Table-Valued函数》http://www.cnblogs.com/insus/p/4378354.html。今天学习另一个,实现返回标量(Scalar-valued) function。 这个标量函数获取分类全名。SELECT [CategoryName] + '--' + [KindName] + '--' + [FruitName] FROM [dbo].Tvf_Fruit() WHERE [Fruit_nbr] = @Fruit_nbrView Code想把这句写成一个标量函数public static SqlString Tvf_GetFullName(SqlByte fruit_nbr),编写clr函数,应当使用static关键词。参考数据类型,使用SQL CL
static函数相关课程
-
PHP函数篇 本教程结合实例形式分析了PHP关于自定义函数的创建、返回值、默认值、参数、值传递、作用域 以及可变函数、嵌套函数、递归函数、闭包函数的使用等相关技巧。
讲师:顾金鹤 入门 22630人正在学习
-
JAVA 函数式编程 本课程以 Java 11 为编译环境,讲解了 Java 对函数式编程支持,以及用实战小例子演示如何使用函数式简洁优雅的直击问题核心逻辑。另,老师新作 《Spring Security+OAuth2 精讲 多场景打造企业级认证与授权》https://coding.imooc.com/class/455.html 也上线啦,课程中将结合前后端分离的权限管理应用,基于从单体到微服务的演进,精讲主流安全框架 Spring Security5.x 的核心技术,一站式覆盖目前企业主流认证授权的方方面面,感兴趣的同学,可以关注一下,欢迎撒花拍砖~~
讲师:接灰的电子产品 初级 10811人正在学习
static函数相关教程
- 2.3 static ES6 提供了用于定义静态属性和方法的关键字 static ,静态方法调用时不需要实例化该类,所以就不能通过实例去调用,但可以使用类直接去调用。静态方法通常用于为一个应用程序创建工具函数,下面我们来看一个长方形类,定义一个获取长方形面积的静态方法。class Rectangle { constructor(width, height) { this.width = width; this.height = height; } static getArea(r) { return r.width * r.height; }}const r = new Rectangle(5, 10);console.log(Rectangle.getArea(r)); // 50
- 3.1 顶层函数替代java中的static函数 我们都知道静态函数内部是不包含状态的,也就是所谓的纯函数,它的输入仅仅来自于它的参数列表,而它的输出也仅仅依赖于它参数列表。设想一下这样开发情景,有时候我们并不想利用实例对象来调用函数,所以我们一般会往静态函数容器类中添加静态函数,如此反复,这样无疑是让这个类容器膨胀。而在 Kotlin 中则认为一个函数或方法有时候并不是属于任何一个类,它可以独立存在。所以在 Kotlin中类似静态函数和静态属性会去掉外层类的容器,一个函数或者属性可以直接定义在一个 Kotlin 文件的顶层中,在使用的地方只需要 import 这个函数或属性即可。
- 3.2 顶层函数和属性的基本使用 在 Koltin 中根本不需要去定义一些没有意义包裹静态函数的容器类,它们都被顶层文件给替代。我们只需要定义一个 Kotlin File,在里面定义好一些函数(注意:不需要 static 关键字)。那么这些函数就可以当做静态函数来使用:package com.imooc.kotlin.topimport java.math.BigDecimal//这个顶层函数不属于任何一个类,不需要类容器,不需要static关键字fun formateFileSize(size: Double): String { if (size < 0) { return "0 KB" } val kBSize = size / 1024 if (kBSize < 1) { return "$size B" } val mBSize = kBSize / 1024 if (mBSize < 1) { return "${BigDecimal(kBSize.toString()).setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()} KB" } val mGSize = mBSize / 1024 if (mGSize < 1) { return "${BigDecimal(mBSize.toString()).setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()} MB" } val mTSize = mGSize / 1024 if (mTSize < 1) { return "${BigDecimal(mGSize.toString()).setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()} GB" } return "${BigDecimal(mTSize.toString()).setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()} TB"}//测试顶层函数,实际上Kotlin中main函数和Java不一样,它可以不存在任何类容器中,可以直接定义在一个Kotlin 文件中//另一方面也解释了Kotlin中的main函数不需要了static关键字,实际上它自己就是个顶层函数。fun main(args: Array<String>) { println("文件大小: ${formateFileSize(15582.0)}")}
- 4.创建函数式接口对象 在上面,我们自定义了一个函数式接口,那么如何创建它的对象实例呢?我们可以使用匿名内部类来创建该接口的对象,实例代码如下:/** * 测试创建函数式接口对象 * @author colorful@TaleLin */public class Test { public static void main(String[] args) { // 使用匿名内部类方式创建函数式接口 FunctionalInterfaceDemo functionalInterfaceDemo = new FunctionalInterfaceDemo() { @Override public void run() { System.out.println("匿名内部类方式创建函数式接口"); } }; functionalInterfaceDemo.run(); }}运行结果:匿名内部类方式创建函数式接口现在,我们学习了Lambda表达式,也可以使用Lambda表达式来创建,这种方法相较匿名内部类更加简洁,也更推荐这种做法。实例代码如下:/** * 测试创建函数式接口对象 * @author colorful@TaleLin */public class Test { public static void main(String[] args) { // 使用 Lambda 表达式方式创建函数式接口 FunctionalInterfaceDemo functionalInterfaceDemo = () -> System.out.println("Lambda 表达式方式创建函数式接口"); functionalInterfaceDemo.run(); }}运行结果:Lambda 表达式方式创建函数式接口当然,还有一种更笨的方法,写一个接口的实现类,通过实例化实现类来创建对象。由于比较简单,而且不符合我们学习函数式接口的初衷,这里就不再做实例演示了。
- 2.3 函数参数 上述我们了解了函数的定义,在其中无参函数调用即调用函数名即可,对于有参函数,需要传递一定的参数来执行对应的操作,函数的参数和脚本的参数类型及用法一致,在此我们简单回顾下,看参数在函数中都有哪些分类,及该如何使用。2.3.1 位置参数位置参数顾名思义,就是传递给函数参数的位置,例如给一个函数传递一个参数,我们可以在执行 Shell 脚本获取对应位置的参数,获取参数的格式为:$n。n 代表一个数字,在此需要注意与脚本传递参数不一样,$0 为依旧为脚本的名称,在函数参数传递中,例如传递给函数的第一个参数获取就为 $1,第 2 个参数就为 $2, 以此类推……,需要其 $0 为该函数的名称。例如:[root@master func]# cat f1.sh #!/bin/bashfunction f1() { echo "函数的第一个参数为: ${1}" echo "函数的第二个参数为: ${2}" echo "函数的第三个参数为: ${3}"}# 调用函数f1 shell linux python go[root@master func]# bash f1.sh 函数的第一个参数为: shell函数的第二个参数为: linux函数的第三个参数为: python我们可以看到传递给 f1 函数共 4 个位置参数,在结果输出中可以看到由于函数体内部只对三个参数进行了处理,后续的参数也就不再处理了。2.3.2 特殊参数在 Shell 中也存在特殊含义的参数如下表:变量含义$#传递给函数的参数个数总和$*传递给脚本或函数的所有参数,当被双引号 " " 包含时,所有的位置参数被看做一个字符串$@传递给脚本或函数的所有参数,当被双引号 " " 包含时,每个位置参数被看做独立的字符串$?$? 表示函数的退出状态,返回为 0 为执行成功,非 0 则为执行失败示例:[root@master func]# cat f1.sh #!/bin/bashfunction fsum() { echo "函数第一个参数为: ${1}" echo "函数第二个参数为: ${2}" echo "函数第三个参数为: ${3}" echo "函数的参数总数为: ${#}" echo "函数的参数总数为: ${@}" local sum=0 for num in ${@}; do let sum=${sum}+${num} done echo "计算的总和为: ${sum}" return 0}# 调用函数fsum 10 20 1 2echo $?[root@master func]# bash f1.sh 函数第一个参数为: 10函数第二个参数为: 20函数第三个参数为: 1函数的参数总数为: 4函数的参数总数为: 10 20 1 2计算的总和为: 330如上可以看到特殊参数与 Shell 脚本传递参数一样。Tips:局部变量需要特别声明在函数内部利用 local 关键字来声明。
- 3.3 顶层函数的原理 通过以上例子思考一下顶层函数在 JVM 中是怎么运行的?仅仅是在Kotlin中使用这些顶层函数,那么可以不用细究。但是 Java 和 Kotlin 混合开发模式,那么就有必要深入内部原理。都知道 Kotlin 和 Java 互操作性是很强的,所以就衍生出了一个问题:在 Kotlin 中定义的顶层函数,在Java可以调用吗?答案肯定是可以的。要想知道内部调用原理很简单,我们只需要把上面例子代码反编译成 Java 代码就一目了然了:package com.imooc.kotlin.top;import java.math.BigDecimal;import kotlin.Metadata;import kotlin.jvm.JvmName;import kotlin.jvm.internal.Intrinsics;import org.jetbrains.annotations.NotNull;@Metadata( mv = {1, 1, 9}, bv = {1, 0, 2}, k = 2, d1 = {"\u0000\u001c\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0006\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\b\u0002\u001a\u000e\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003\u001a\u0019\u0010\u0004\u001a\u00020\u00052\f\u0010\u0006\u001a\b\u0012\u0004\u0012\u00020\u00010\u0007¢\u0006\u0002\u0010\b¨\u0006\t"}, d2 = {"formateFileSize", "", "size", "", "main", "", "args", "", "([Ljava/lang/String;)V", "production sources for module Function"})@JvmName(//注意这里多了注解 name = "FileFormatUtil")public final class FileFormatUtil {//这里生成的类名就是注解中自定义生成的类名了 @NotNull public static final String formateFileSize(double size) { if(size < (double)0) { return "0 KB"; } else { double kBSize = size / (double)1024; if(kBSize < (double)1) { return "" + size + " B"; } else { double mBSize = kBSize / (double)1024; if(mBSize < (double)1) { return "" + (new BigDecimal(String.valueOf(kBSize))).setScale(1, 4).toPlainString() + " KB"; } else { double mGSize = mBSize / (double)1024; if(mGSize < (double)1) { return "" + (new BigDecimal(String.valueOf(mBSize))).setScale(1, 4).toPlainString() + " MB"; } else { double mTSize = mGSize / (double)1024; return mTSize < (double)1?"" + (new BigDecimal(String.valueOf(mGSize))).setScale(1, 4).toPlainString() + " GB":"" + (new BigDecimal(String.valueOf(mTSize))).setScale(1, 4).toPlainString() + " TB"; } } } } } public static final void main(@NotNull String[] args) { Intrinsics.checkParameterIsNotNull(args, "args"); String var1 = "文件大小: " + formateFileSize(15582.0D); System.out.println(var1); }}通过以上的代码可以总结出两点内容:1、顶层文件会反编译成一个容器类。(类名一般默认就是顶层文件名+"Kt"后缀,注意容器类名可以自定义)2、顶层函数会反编译成一个 static 静态函数,如代码中的 formateFileSize 和 main 函数。
static函数相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议