您当前的位置:首页 > 养生 > 内容

启用javascript功能(怎么开启浏览器中的JavaScript功能)

下一个 object Test { val 2 = 3 } 也是个常量模式匹配,把变量v2 绑定在v1这个模式上scala》 “hello“ match { case v2@v1 =》 println(v2) }上面的例子中,话说模式匹配 scala里的赋值语句都是模式匹配吗先抛个问题,赋值语句都明确的定义为模式匹配,但”2=2″也引起模式匹配就会让我产生疑问:是否所有的赋值语句都是模式匹配?为了验证,scala》 val a = 100 scala》 val A = 100 scala》 val a@b = 100scala》 val (a,b) = (100,200)scala》 val (a,B) = (100,200)    //第二个变量大写scala》 val Array(a,b) = Array(100,200)scala》 val Array(a,B) = Array(100,200) scala》 object Test { val 2 = 2 } scala》 object Test { val 2 = 3 }我们先看看其他语言(对scala有影响的)有关赋值语句的定义:1) 在 ML 语言里,通过编译选项查看val a=2 这样对单个变量的赋值却没有看到模式匹配,2、360浏览器开启JavaScript方法:在360界面菜单栏的“工具”中选择“360安全浏览器选项”–“网页设置”选项–在网页设置选项中取消“不支持Java小程序”。

怎么开启浏览器中的JavaScript功能

1、IE浏览器开启JavaScript方法:

在IE界面菜单栏中“工具”中选择“Internet选项”–“安全”选项卡–选择“Internet”(蓝色的小地球)–“自定义级别”–找到“脚本”下的“Java小程序脚本”中进行启用。如下图所示,设置完成后,重新打开浏览器设置即可生效。

2、360浏览器开启JavaScript方法:

在360界面菜单栏的“工具”中选择“360安全浏览器选项”–“网页设置”选项–在网页设置选项中取消“不支持Java小程序”。如下图所示,设置完成后,重新打开浏览器设置即可生效。

3、腾讯TT浏览器开启JavaScript方法:

打开TT浏览器,点击右上方的“菜单” - 选择“工具” - 选择“TT选项”,在打开的设置界面中选择“智能屏蔽”,在智能屏蔽设置页面中将“禁止运行Java程序”取消,点击保存,重新启动浏览器设置即可生效。

4、搜狗浏览器开启JavaScript方法:

目前,搜狗开启JavaScript方法继承于IE浏览器,IE浏览器开启JavaScript方法

5、火狐浏览器开启JavaScript方法:

打开火狐浏览器界面,在菜单栏中选择“工具”–“选项”–“内容”中可见到“启用JavaScript”的选项,重新启动浏览器即可。

c语言程序设计日历代码

#include“iostream.h“#include“iomanip.h“#include“stdlib.h“leapyear(int a)/*是否是闰年*/{if((a%4==0&&a%100!=0)||(a%100==0&&a%400==0))return (1);else return (0);}int aa={31,28,31,30,31,30,31,31,30,31,30,31};int cc={31,29,31,30,31,30,31,31,30,31,30,31};char bb={“星期日“,“星期一“,“星期二“,“星期三“,“星期四“,“星期五“,“星期六“};ww(int a,int b,int c){int n=0,m=0,i,j,k=0;for(i=1;i {if(leapyear(i)==1)m=m+366;else m=m+365;}for(j=1;j {if(leapyear(c)==1) k=k+cc[j-1];else k=k+aa[j-1];}n=(m+k+a)%7;return n;}void yuefen(int m){cout《《“最大天数是:“;if(m==2)cout《 else cout《 }void nianfen(int n)/*打印年份的日历*/{int i,j,k;if(leapyear(n)==1){for(j=1;j《=12;j++){cout《 cout《《“月份“《 cout《《“ 日“《《“ 一“《《“ 二“《《“ 三“《《“ 四“《《“ 五“《《“ 六“《 for(i=0;i {cout《 }for(k=1;k《=cc[j-1];k++){cout《 if((ww(1,j,n)+k)%7==0)cout《 }cout《 }}else{for(j=1;j《=12;j++){cout《 cout《《“月份“《 cout《 cout《 for(i=0;i {cout《 }for(k=1;k《=aa[j-1];k++){cout《 if((ww(1,j,n)+k)%7==0)cout《 }cout《 }}}void main(){int n,m;int day,month ,year;while(1){cout《《“***********************************:“《 cout《《“1查询某年某月某日是星期几“《 《《“2是否为闰年“《 《《“3查询某月的最大天数“《 《《“4打印某年的全年日历“《 《《“5打印某年某月的月历“《 《《“6exit“《 《《“***********************************:“《 cout《《“请输入要操作的指令:“《 cin》》n;switch(n){case 1:cout《《“请输入要查询的日期:“;cout《《“year:“;cin》》year;cout《 cin》》month;cout《 cin》》day;cout《《“星期是:“;cout《 switch(ww(day,month,year)){case 1:cout《《“星期一“;break;case 2:cout《《“星期二“;break;case 3:cout《《“星期三“;break;case 4:cout《《“星期四“;break;case 5:cout《《“星期五“;break;case 6:cout《《“星期六“;break;case 7:cout《《“星期日“;break;}cout《 case 2:cout《《“请输入要查询的年份:“;cin》》m;if(leapyear(m)==1) cout《《“是闰年“《 else cout《《“不是闰年,请返回重新输入“《 break;case 3:cout《《“请输入月份:“;cin》》m;yuefen(m);break;case 4:cout《《“请输入所要打印年份:“;cin》》m;nianfen(m);break;case 5:cout《《“请输入年份:“;cin》》n;cout《 cin》》m;cout《 nianyue(n,m);break;case 6:exit(0);}}}

Excel中怎麼样才能禁止鼠标右键.附代码,分析错误原因.VBA

把ByVal Cancel As Boolean 中的 ByVal 去掉就可以了。Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)Cancel = TrueEnd Sub大概就是原来已经有默认的鼠标右键的模块了,在传递参数的时候应该使用按地址传递。我也不太懂 :P所有的参数传递给过程都是按地址的,除非有特别指定的别的方法。此法是比较有效率的,因为在过程内所有按地址传递的参数所花费的传递时间与空间的总数(4 字节)都是一样的,而不管参数的数据类型。可以按值的来传递参数,只要在过程的声明中包含 ByVal 关键字。按值传递参数会在过程内部消耗掉 2 至 16 字节,此取决于参数的数据类型。对于大的数据类型按值传递会比小的数据类型需要稍长的时间。因此,String 和 Variant 数据类型通常不按值来传递参数。使用按值的方法时会将原来的变量复制一份,当做参数传递过去。改变过程内部的参数时将不会影响到原来的变量。

话说模式匹配 scala里的赋值语句都是模式匹配吗

先抛个问题,下面的语句是否都合理(编译通过),哪些会引起模式匹配?

scala》 val a = 100 scala》 val A = 100 scala》 val a@b = 100scala》 val (a,b) = (100,200)scala》 val (a,B) = (100,200)    //第二个变量大写scala》 val Array(a,b) = Array(100,200)scala》 val Array(a,B) = Array(100,200) scala》 object Test { val 2 = 2 } scala》 object Test { val 2 = 3 }

我们先看看其他语言(对scala有影响的)有关赋值语句的定义:

1) 在 ML 语言里,对赋值语句的定义:

val P = E

表示定义了模式P中的变量,并赋予它们表达式E中相应的值。

2) 在Erlang中等号 = 表示一个模式匹配操作

在这两种语言中,赋值语句都明确的定义为模式匹配,那么scala中,所有的赋值语句是否都是模式匹配呢?尤其scala可以说在函数式风格上与ML(及其家族)语言有某种血缘,在这一点上是否也与ML完全一致呢?

先分析一下上面的每条赋值语句:val a = 100 和 val A = 100是直观且没有歧义的。

val a@b = 100 是什么意思?“变量绑定模式”,当时的例子有点复杂,重新理解一下:

//给“hello“字符串对象用v1这个变量名scala》 “hello“ match { case v1 =》 println(v1) }//变量绑定模式,把变量v2 绑定在v1这个模式上scala》 “hello“ match { case v2@v1 =》 println(v2) }

上面的例子中,第一行中v1是个变量模式。 第二行中v2是一个新的变量,只有在v1这个模式匹配成功的情况下,才会把自己绑定到v1上,而v1因为是一个变量模式,它总能匹配成功,所以这里v2也会绑定到”hello”对象上。变量绑定模式通常不会这么使用,更多用在绑定到一个复合结构的模式上,如:

scala》 List(1,List(2,3)) match { case List(_, x@List(2,_*)) =》 println(x.size) }

2

把变量x绑定到了嵌套的 List(2,3) 这个对象上

但赋值语句val a@b = 100 跟上面的有关系么?我们通过ToolBox看看它”脱糖”后的语法树:

scala》 tb.parse(“val a@b=100“)res13: tb.u.Tree ={    《synthetic》 private[this] val x$3 = 100: @scala.unchecked match {        case (a @ (b @ _)) =》 scala.Tuple2(a, b) //这一句    };    val a = x$3._1;    val b = x$3._2}

有注释的那一句里面把a,b两个局部变量绑定到通配符”_”上,而这个通配符模式case _ =》 可以匹配任何对象,所以相当于把a,b两个变量绑定到了100这个对象上,并产生了一个二元组记录这两个局部变量值。最终把二元组里的值分别赋给了我们定义的a,b两个变量。

接下来的val (a,b) = (100,200) 这个赋值也容易理解,把二元组里的值分别赋给a,b两个变量么,也是经过模式匹配的么?继续用ToolBox分析:

scala》 tb.parse(“val (a,b)=(100,200)“)res14: tb.u.Tree ={    《synthetic》 private[this] val x$4 = scala.Tuple2(100, 200): @scala.unchecked match {        case scala.Tuple2((a @ _), (b @ _)) =》 scala.Tuple2(a, b)    };    val a = x$4._1;    val b = x$4._2}

看到了,是一个构造器模式与变量绑定模式的混合模式匹配。

再下一个val (a,B) = (100,200) 这个与上一个有区别么?回顾一下第一篇里讲到的“常量模式”:当变量大写时将被对待为常量模式,也就是说 大写B 和上面的 小写b 是两种不同的模式!!

scala》 tb.parse(“val (a,B)=(100,200)“)res15: tb.u.Tree =val a = scala.Tuple2(100, 200): @scala.unchecked match {    case scala.Tuple2((a @ _), B) =》 a}

大写B在这里当作常量来解析,但又找不到B这个变量(除非之前有定义过),就报错了:

scala》 val (a,B) = (100,200)《console》:8: error: not found: value B   val (a,B) = (100,200)          ^

后边两个Array的赋值语句与这两个类似,小括号写法只是元组(Tuple)的语法糖而已。

最后,真正有趣,且会让新手崩溃的情况 object Test { val 2 = 2 } 为什么这个编译和初始化都没问题?

scala》 object Test { val 2 = 2 }defined module Testscala》 Testres16: Test.type = Test$@3042dc22

简直逆天,难道这个背后也与模式匹配有关系么?

scala》 tb.parse(“ object Test { val 2 = 2 }“)res0: tb.u.Tree =object Test extends scala.AnyRef {    def 《init》() = {        super.《init》();        ()    };    《synthetic》 private[this] val x$1 = 2: @scala.unchecked match {        case 2 =》 ()    }}

确实又是一个常量模式匹配,2匹配2,成功。

同理,下一个 object Test { val 2 = 3 } 也是个常量模式匹配,但为何明显不匹配,却可以编译时成功,而运行时时才报错呢?

scala》 object Test { val 2 = 3 }defined module Testscala》 Testscala.MatchError: 3 (of class java.lang.Integer)    at Test$.《init》(《console》:8)

这是因为object 是惰性初始化的原因(lazy),如下:

// 对下面的单例object Test { val a = 2 }$ scalac -Xprint:jvm A.scalapackage 《empty》 {  object Test extends Object {    private[this] val a: Int = _;    《stable》 《accessor》 def a(): Int = Test.this.a;    def 《init》(): Test.type = {        Test.super.《init》();        Test.this.a = 2;  //在初始化时才对成员赋值        ()    }  }}

在对多个变量赋值,或变量中有@符合,导致模式匹配还好理解,但”2=2″也引起模式匹配就会让我产生疑问:是否所有的赋值语句都是模式匹配?

为了验证,通过编译选项查看val a=2 这样对单个变量的赋值却没有看到模式匹配。另外,如果单个变量也是模式匹配,为何大写字母val A=2没问题?假设对单个变量赋值也是模式匹配,那岂不无法定义大写的变量了;肯定是有区别的,但又怎么区分的?

在那个帖子里,martin也回复了为何 val 1=2是模式匹配,并且为何不把这种情况作为错误给修复掉:

A value definition is of the form

val 《pattern》 = 《expression》 // 这个同ML和Erlang语言1 is a 《pattern》

There is one edge case:If the pattern is a single variable (upper or lower case or backquoted), then it is always treated as a variable, not a constant. Otherwise, there would be no way to define such a value.

只有一种边缘情况:如果模式是一个单独的变量(大写、小写、或用反引号引起来的),那么它总被当作变量,而非常量。否则就没法定义这样的一个值。

所以1=2, “a“=“b“ 这样的赋值语句虽然是一个变量,但变量名称不符合上面的约束,产生了模式匹配。至于为何不修复这个问题(直接在编译时报错),也可以从这个帖子的线索中找到原因。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 删除cookies(删除cookies 文件有什么后果)

下一篇: 三层自建房要避雷针吗



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号