首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【错误记录】Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )

文章目录 一、报错信息 二、问题分析 三、解决方案 该问题的本质就是 , 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 ; 一、报错信息 ---- 执行下面的代码...initName() = "Tom $age" } fun main() { var h = Hello(18) println(h.name) } 得到的结果是 : Tom 0 在上述代码的构造函数中...类中的属性赋值 init 初始化块 中的代码执行 次构造函数 中的代码执行 在下面的代码中 , class Hello(_age: Int){ var name: String = initName..., 开始对 类中的属性赋值 , 先给 name 属性赋值 , 该赋值调用了 initName 函数 , 在该函数中调用了 age 成员属性 , 但是此时 age 属性还没有赋值 , 使用的是默认值 0...; 之后才对 age 进行赋值 ; 因此最终打印出的 name 结果是 Tom 0 ; 三、解决方案 ---- 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性

44710

vue教程:Vue.js中 watch 的高级用法

wacth监听每次修改变化的新值,然后计算输出fullName,但是这个代码有一个缺陷,就是默认初始化时候,fullName是没有值的,这里 watch 的一个特点是,最初绑定的时候是不会执行的。...而immediate:true代表如果在 wacth 里声明了 firstName 之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行。...由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。...= { a: '456' } } 那么如何才让obj里面的属性a变化后,watch自动监听执行呢?...$watch调用后会返回一个值,就是unWatch方法,你要注销 watch 只要调用unWatch方法就可以了,所以平时我们建议大家平时写watch都写到Vue的实例方法中去,避免维护上的麻烦。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    this介绍(理论加例子)

    直接调用 因为下面的代码不是在严格模式下执行,并且this的值不会在函数执行时被设置,此时的this的值会默认设置为全局对象。...对象方法中的 this 当以对象里的方法的方式调用函数时,它们的 this 是调用该函数的对象. 下面的例子中,当 o.f() 被调用时,函数内的this将绑定到o对象。...类似的,this 的绑定只受最靠近的成员引用的影响。在下面的这个例子中,我们把一个方法g当作对象o.b的函数调用。在这次执行期间,函数中的this将指向o.b。...作为getter或setter函数都会绑定 this 到从设置属性或得到属性的那个对象。...,手动的设置了返回对象,与this绑定的默认对象被取消(本质上这使得语句“this.a = 37;”成了“僵尸”代码,实际上并不是真正的“僵尸”,这条语句执行了但是对于外部没有任何影响,因此完全可以忽略它

    24710

    微信小程序:WXML模板语法

    数据绑定 数据绑定基本原则: 在data中定义数据 在WXML中使用数据 在data中定义页面的数据 在页面对应的.js文件中,把数据定义到data对象中即可: Page({ data: {...主要应用场景: 绑定内容 绑定属性 运算(三元运算、算术运算等) 动态绑定内容 {{要绑定的数据名称}} 动态绑定属性 页面的数据如下: Page({ data: {...小程序中常用的事件 类型 绑定方式 事件描述 tap bindtap或bingd:tap 手指触摸后马上离开,类似于HTML中的click事件 input bindinput或bind:input 文本框的输入事件...例如,下面的代码将不能正常工作: 事件传参 因为小程序会把bindtap的属性值,...统一当作事件名称来处理,相当于要调用一个名称为btnHandler(123)的事件处理函数。

    2.1K60

    vue源码分析-v-model的本质

    11.1.2 AST树的解析模板的编译阶段,会调用var ast = parse(template.trim(), options)生成AST树,parse函数的其他细节这里不展开分析,前面的文章或多或少都涉及过...其中最重要的两行代码是// 添加value属性addProp(el, 'value', ("(" + value + ")"));// 绑定事件属性addHandler(el, event, code...最终AST树新增了两个属性:图片回到genData,通过genDirectives处理后,原先的AST树新增了两个属性,因此在字符串生成阶段同样需要处理props和events的分支。...11.1.2 AST树的解析模板的编译阶段,会调用var ast = parse(template.trim(), options)生成AST树,parse函数的其他细节这里不展开分析,前面的文章或多或少都涉及过...其中最重要的两行代码是// 添加value属性addProp(el, 'value', ("(" + value + ")"));// 绑定事件属性addHandler(el, event, code

    1K20

    Vue 侦听器 watch 扩展之立即触发回调、深度监听和注销

    一、立即触发回调 watch 最初绑定时是不会执行的,需要等监听的内容改变时才执行监听计算 那我们想要一开始绑定的时候就执行该怎么办呢?...: true 将立即以表达式的当前值触发回调,即在 wacth 中声明了 firstName 之后就会立即执行里面的 handler 方法,如果为 false 就跟原来的效果一样,不会在绑定的时候就执行...二、深度监听 受 JavaScript 的限制,Vue 无法检测到对象属性的变化 例如,在下面的输入框中输入数据改变 obj.a 的值是无效的 <input type="text...('obj.a changed'); }, { immediate: true, deep: true } } } 设置 deep 为 true 后,...watch( 'value', function () { doSomething() unwatch() }, { immediate: true } ) 如果仍想在回调内部调用一个取消侦听的函数

    2.7K10

    《JavaScript 模式》读书笔记(4)— 函数3

    此外,它也不能访问scareMe.property属性。 再多说两句,个人理解: // 我们先来看,为什么上面的代码访问不到property属性。...在第一次执行scareMe()方法后,就找不到property属性了。因为第一次执行后,绑定的是外层变量的指针,此时在绑定属性的时候,是绑定在这个指针上的。...而当函数执行了一次后,内部的scareMe()函数,替换了原来的函数指针。它已经不是曾经的它了!所以property属性是绑定在外层的,那当然再就找不到了被。   那么,由于它被覆盖了。...那么,我们再看代码: // 我们先来看,为什么上面的代码访问不到property属性。...它可以帮助包装许多想要执行的工作,且不会在后台留下任何全局变量。定义的所有这些变量将会是用于自调用函数的局部变量,并且不用担心全局空间被临时变量所污染。

    39220

    《JavaScript 模式》读书笔记(4)— 函数3

    此外,它也不能访问scareMe.property属性。 再多说两句,个人理解: // 我们先来看,为什么上面的代码访问不到property属性。...在第一次执行scareMe()方法后,就找不到property属性了。因为第一次执行后,绑定的是外层变量的指针,此时在绑定属性的时候,是绑定在这个指针上的。...而当函数执行了一次后,内部的scareMe()函数,替换了原来的函数指针。它已经不是曾经的它了!所以property属性是绑定在外层的,那当然再就找不到了被。   那么,由于它被覆盖了。...那么,我们再看代码: // 我们先来看,为什么上面的代码访问不到property属性。...它可以帮助包装许多想要执行的工作,且不会在后台留下任何全局变量。定义的所有这些变量将会是用于自调用函数的局部变量,并且不用担心全局空间被临时变量所污染。

    44040

    vue源码分析-v-model的本质

    11.1 表单绑定11.1.1 基础使用v-model和表单脱离不了关系,之所以视图能影响数据,本质上这个视图需要可交互的,因此表单是实现这一交互的前提。...11.1.2 AST树的解析模板的编译阶段,会调用var ast = parse(template.trim(), options)生成AST树,parse函数的其他细节这里不展开分析,前面的文章或多或少都涉及过...其中最重要的两行代码是// 添加value属性addProp(el, 'value', ("(" + value + ")"));// 绑定事件属性addHandler(el, event, code...最终AST树新增了两个属性:图片回到genData,通过genDirectives处理后,原先的AST树新增了两个属性,因此在字符串生成阶段同样需要处理props和events的分支。...会利用vnode data上的attrs属性更新节点的属性值;updateDomListeners利用vnode data上的on属性添加事件监听。

    75710

    7、微信小程序免费视频教程之模块化

    wxml文件用于描述页面的结构。 wxss文件用于描述页面的样式。 微信小程序的逻辑层负责将数据进行处理,然后发送给视图层来进行展示。 视图层的主要作用就是将数据进行展示。...1、数据绑定。 wxml文件内的所有数据都来自js文件当中Page的data对象。 数据绑定需要作用双大括号来对变量进行包裹!...{{content}} data: { content:"我是一只小小小小小小鸟" }, 还可以通过数据绑定来设置组件的属性....wx:if:通过用wx:if="{{}}"来判断是否需要渲染该代码块。...还可以使用wx:elif和wx:else block仅仅是一个包裹元素而已,不属性于小程序的组件,也不会在页面当中进行任何的渲染。可以通过该标签来实现一些属性上的控制。

    62010

    面试官:在原生input上面使用v-model和组件上面使用有什么区别?

    我们接下来看看编译后的js代码是什么样的,那么问题来了怎么找到编译后的js代码呢?...binding:一个对象,包含以下属性。上面的例子中是直接解构了binding对象。 lazy:默认情况下,v-model 会在每次 input 事件后更新数据。...调用looseToNumber方法将domValue字符串转换为数字。 最后将处理后的domValue,也就是处理后的输入框中的输入值,作为参数调用el[assignKey]方法。...因为在input或者change事件的回调中会将输入框的值根据传入的修饰符进行处理,然后将处理后的输入框的值作为参数手动调用onUpdate:modelValue回调函数,在回调函数中更新绑定的msg变量...这也就解释了我们前面的问题:如何将vModelText自定义指令绑定的msg变量的值传递给input输入框中的value属性的呢?

    33021

    ASP.NET MVC学习笔记06编辑方法和编辑视图

    优化日期显示 在这之前,先对前面的代码进行优化,使得发布日期属性(ReleaseDate)看上去更好。打开Models/Movies.cs参考下图进行修改。 ?...注意,第二个Edit操作方法的上面有HttpPost属性。此属性指定了Edit方法的重载,此方法仅 被POST 请求所调用。...绑定(Bind)属性是另一个重要安全机制,可以防止黑客攻击(从over-posting数据到模型)。应该只包含在bind属性属性,本教程中使用的简单模型,模型中绑定所有数据。...下面的代码演示如何检查 movieGenre参数。如果它不是空的,代码进一步指定了所查询的电影流派。 if (!...string.IsNullOrEmpty(movieGenre)) { movies = movies.Where(x => x.Genre == movieGenre); } 如前所述,查询数据不会在数据库上运行

    5K50

    DataGridView控件用法一:数据绑定

    一、非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性...用户在单元格中显示下拉列表,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格中显示超链接,不会在绑定时自动生成,通常需要进行手动绑定数据 二...、绑定模式 就是将已经存在的数据绑定到DataGridView控件上。...将数据绑定到DataGridView控件上非常简单和直观,在大多数情况下,只需设置DataSource属性即可。...,演示上面的各种绑定方式 1、界面设计如下图: ?

    4K20

    8、微信小程序免费视频教程之for

    wxml文件用于描述页面的结构。 wxss文件用于描述页面的样式。 微信小程序的逻辑层负责将数据进行处理,然后发送给视图层来进行展示。 视图层的主要作用就是将数据进行展示。...1、数据绑定。 wxml文件内的所有数据都来自js文件当中Page的data对象。 数据绑定需要作用双大括号来对变量进行包裹!...{{content}} data: { content:"我是一只小小小小小小鸟" }, 还可以通过数据绑定来设置组件的属性....wx:if:通过用wx:if="{{}}"来判断是否需要渲染该代码块。...还可以使用wx:elif和wx:else block仅仅是一个包裹元素而已,不属性于小程序的组件,也不会在页面当中进行任何的渲染。可以通过该标签来实现一些属性上的控制。

    1.1K30
    领券