首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android群英传

    Kotlin修炼指南(五)—Delegates

    观察属性observable Delegates.observable可以非常方便的帮助我们实现观察者模式,代码如下所示。 var observableProp: String by Delegates.observable("init value 0") { property, oldValue, newValue -> private var backPressedTime by Delegates.observable(0L) { pre, old, new -> if (new - old < 2000) var vetoableProp: Int by Delegates.vetoable(0){ _, oldValue, newValue -> // 如果新的值大于旧值,则生效

    1K20发布于 2021-01-29
  • 来自专栏IMWeb前端团队

    delegates - 委托模式的简单实现

    本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 最近发现一个有意思的模块 - delegates,它由大名鼎鼎的 TJ 所写,可以帮我们方便快捷地使用设计模式当中的委托模式 用法 delegates 基本用法就是将内部对象的变量或者函数绑定在暴露在外层的变量上,直接通过 delegates 方法进行如下委托,基本的委托方式包含: getter:外部对象可以直接访问内部对象的值 setter:外部对象可以直接修改内部对象的值 access:包含 getter 与 setter 的功能 method:外部对象可以直接调用内部对象的函数 const delegates = require ; } }, } // 将内部对象 dog 的属性、函数 // 委托至暴露在外的 petShop 上 delegates(petShop, 'dog') .getter('name') 其它 delegates 提供的函数如 fluent | access 都是类似的,就不重复说明了。

    83810发布于 2019-12-03
  • 来自专栏.NET后端开发

    C#委托使用详解(Delegates

    摘要 委托是C#编程一个非常重要的概念,也是一个难点。本文将系统详细讲解委托。 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说实话,每个人都委托都有不同的见解,因为看问题的角度不同。个人认为,可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。  (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。 既然委托是一种类型,那么它存储的是什么数据? 我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的

    1.6K50发布于 2018-04-03
  • 来自专栏U3D

    游戏设计模式——Unity事件队列(纪念京阿尼事件)

    void InternalEventDelegate(GameEvent e); 14 15 private Dictionary<Type, InternalEventDelegate> delegates (typeof(T)); 56 else 57 Instance.delegates[typeof(T)] = temp; (typeof(T), out InternalEventDelegate temp)) 81 delegates[typeof(T)] = temp += eventDelegate ; 82 else 83 delegates[typeof(T)] = eventDelegate; 84 return eventDelegate [type] -= item; 100 if (Instance.delegates[type] == null) 101

    2.4K20发布于 2020-03-19
  • 来自专栏用户10004205的专栏

    AimSystem Unity瞄准场景中的物体并进行交互的系统

    Array.Exists(delegates, v => v == (Delegate)action)) mOnEnterEvent += action; Array.Exists(delegates, v => v == (Delegate)action)) mOnExitEvent += action; void DeleteAimEnterEvent(Action action) { if (null == mOnEnterEvent) return; Delegate[] delegates = mOnEnterEvent.GetInvocationList(); if (Array.Exists(delegates, v => v == (Delegate)action)) = mOnExitEvent.GetInvocationList(); if (Array.Exists(delegates, v => v == (Delegate)action))

    81320编辑于 2022-08-29
  • 来自专栏程序员开发工具

    Android 自定义 MarqueeView 实现跑马灯 —— 原理篇

    因为同一时刻只有一个 delegate 能处理该 position; 当没有指定 viewType 的时候,我们会以当前 delegates 的容量作为 key 存进 SparseArrayCompat <T> addDelegate(int viewType, ItemViewDelegate<T> delegate) { if (delegates.get(viewType) ! delegates.put(viewType, delegate); return this; } public ItemViewDelegateManager<T> ,去查找相应的 delegate,然后再获取通过 delegate 在 delegates 数组中对应的 key,即我们的 viewType public int getItemViewType - 1; i >= 0; i--) { ItemViewDelegate<T> delegate = delegates.valueAt(i); if

    1.3K10发布于 2018-09-18
  • 来自专栏haifeiWu与他朋友们的专栏

    Kotlin委托

    也可以直接继承 ReadWriteProperty ,实现其中的方法,这样就避免了自己手写可能出现的错误,例如 Kotlin 源码中这样实现判空的委托属性: public object Delegates *>, value: T) { this.value = value } } 其中 NotNullVar 继承了 ReadWriteProperty,并实现了他的两个方法,而Delegates.notNull Delegates.observable() 接受两个参数:初始值和修改时处理程序(handler)。 每当我们给属性赋值时会调用该处理程序(在赋值后执行)。 它有三个参数:被赋值的属性、旧值和新值: import kotlin.properties.Delegates class User { var name: String by Delegates.observable class App: Application() { companion object { var instance: App by Delegates.netNull()

    1.9K30发布于 2018-09-11
  • 来自专栏给永远比拿愉快

    C#多播委托(Multicast Delegate)

    Delegate[] delegates = greetings.GetInvocationList(); //注意这里的delegates列表中存储的是Greetings类型的委托 foreach (Greetings greeting in delegates) { greeting(name);

    2.4K50发布于 2019-01-25
  • 来自专栏Android 开发者

    Kotlin Vocabulary | Kotlin 内建代理

    Observable Delegates.observable() 是另一个 Kotlin 标准库中内建的代理。 SPDX-License-Identifier: Apache-2.0 --> class Person { var address: String by Delegates.observable SPDX-License-Identifier: Apache-2.0 --> class Person { var address: String by Delegates.observable SPDX-License-Identifier: Apache-2.0 --> var address: String by Delegates.vetoable("") { property val fullname: String by Delegates.notNull<String>() notNull() 使用一种特殊类型的 ReadWriteProperty: NotNullVar

    1.3K00编辑于 2022-03-09
  • 来自专栏程序猿杜小头

    WebMvcConfigurer,有点东西

    class WebMvcConfigurerComposite implements WebMvcConfigurer { private final List<WebMvcConfigurer> delegates CollectionUtils.isEmpty(configurers)) { this.delegates.addAll(configurers); } configurePathMatch(PathMatchConfigurer configurer) { for (WebMvcConfigurer delegate : this.delegates configureContentNegotiation(ContentNegotiationConfigurer configurer) { for (WebMvcConfigurer delegate : this.delegates

    37810编辑于 2023-09-02
  • 来自专栏iOSer

    iOS踩坑之多代理模式使用注意

    结论 在需要使用多代理效果时,必须卡在把最后一个代理对象加入multiDelegate的delegates数组后,再对delegate赋值。否则,会导致后添加的代理对象特有的代理方法不回调的问题。 delegate赋值时,会触发库中AIMultiDelegate.m文件中- (BOOL)respondsToSelector:(SEL)selector方法,如果此时,multiDelegate对象的delegates 因此,必须在你确保没有代理对象需要加入multiDelegate的delegates数组时,才能对delegate进行赋值。

    95420发布于 2020-09-04
  • 来自专栏专注研发

    POJ-1032-拆数字

    Description New convocation of The Fool Land's Parliament consists of N delegates. According to the present regulation delegates should be divided into disjoint groups of different sizes You are to write a program that will determine how many delegates should contain each group in order

    53510发布于 2018-09-21
  • 来自专栏老欧说安卓

    Kotlin入门(28)Application单例化

            //private lateinit var instance: MainApplication         //fun instance() = instance     } } 二、借助Delegates 如果仅仅是确保属性非空,其实Kotlin已经提供了一个系统工具进行自动校验,这个工具便是Delegates的notNull方法。 利用Delegates工具的属性代理功能,就构成了Kotlin的第二种单例化方式;有关委托属性和属性代理的介绍,可参见前面的博文《Kotlin入门(25)共享参数模板》。 生成委托属性     companion object {         private var instance: MainApplication by Delegates.notNull()         显然系统自带的Delegates工具没有提供大家期待的校验行为,于是开发者必须自己写一个能够校验赋值次数的行为类,目的是接管委托属性的读写行为。

    2.5K30发布于 2019-01-18
  • 来自专栏悟空聊架构 | 公众号

    C#多线程之旅(3)——线程池

    你必须使用老的结构进入线程池: ThreadPool.QueueUserWorkItem和asynchoronous delegates.两者的不同点是asynchronous delegates让你从线程那里返回数据 Asynchronous delegates收集任何exception返回给调用者。 要使用QueueUserWorkItem,只需调用这个方法的运行在线程池上的委托。 Asynchronous delegate invocations(asynchronous delegates for short)解决了这个问题,允许任何个数类型化的参数在两个方向传递。 此外,在asynchronous delegates上未处理的异常很方便地在原始线程上重新抛出(更准确地说,这个线程叫做EndInvoke),因此不需要显示处理。 不要混淆asynchronous delegates和asynchronous method(方法以Begin和End开头的,比如File.BeginRead/File.EndRead)。

    1.3K60发布于 2018-05-18
  • 来自专栏Android常用基础

    Kotlin学习笔记(四)-面向对象

    operator-overloading.html } 属性代理 代理的场景 比如定义一个属性外界去访问,可以在getValue去读取一个文件setValue去写入一个文件那么就相当于与读取一个就可以文件,调用处代码变得非常简洁 class Delegates4 property.name} = $value") this.value = value } } fun main(args: Array<String>) { val delegates = Delegates4_9() println(delegates.hello) println(delegates.hello2) println(delegates.hello3 ) delegates.hello3 = "value of hello3" println(delegates.hello3) } 数据类 主要是讲解data关键字,data主要是帮助生成

    1.1K10发布于 2019-12-20
  • 来自专栏芋道源码1024

    网关 Spring-Cloud-Gateway 源码解析 —— 路由(1.1)之RouteDefinitionLocator一览

    { /** * RouteDefinitionLocator 数组 */ private final Flux<RouteDefinitionLocator> delegates ; public CompositeRouteDefinitionLocator(Flux<RouteDefinitionLocator> delegates) { this.delegates = delegates; } @Override public Flux<RouteDefinition> getRouteDefinitions() { return this.delegates.flatMap(RouteDefinitionLocator::getRouteDefinitions); } } #getRouteDefinitions() 方法,提供统一方法,将组合的 delegates 的路由定义全部返回。

    1.6K00发布于 2018-07-31
  • 来自专栏YuanXin

    深入koa源码 - 核心库原理

    的返回结果即可: function* say() {} Object.prototype.toString.call(say); // 输出: [object GeneratorFunction] delegates :属性代理 delegates和 koa 一样,这个库都是出自大佬 TJ 之手。 用法 假设准备了一个对象target,为了方便访问其上request属性的内容,对request进行代理: const delegates = require("delegates"); const target name: "xintan", say: function() { console.log("Hello"); } } }; delegates

    59350发布于 2020-04-21
  • 来自专栏后端学习之道

    Kotlin 设计模式:简化观察者模式

    Delegates.observable()简化了对象属性更改的观察者模式实现: 您可以组合观察者委托来观察属性更改和高阶函数来注册回调。 import kotlin.properties.Delegates class WeatherStation { // Observable property with callbacks: var temperature: Float by Delegates.observable(0f) { _, _, newValue -> onTemperatureChangeListeners.forEach 委托属性 ( Delegates.observable()): 简化属性更改观察。

    48410编辑于 2024-02-29
  • 来自专栏深入浅出区块链技术

    探究Compound治理及构建治理界面

    delegate, newBalance } = e.returnValues; delegateAccounts[delegate] = newBalance; }); const delegates ({ delegate: account, vote_weight: voteWeight }); }); delegates.sort((a, b) => { 1 : -1; }); delegates.forEach(d => { d.vote_weight = (100 * ((d.vote_weight / 1e18) / 10000000 (delegates); })(); get_delegates_web3.js [完整代码示例](https://github.com/compound-developers/compound-governance-examples /blob/master/web3-examples/get_delegates.html "完整代码示例") 或者,可以从Compound API 检索此信息。

    1.6K31发布于 2020-10-23
  • 来自专栏Chromium学习

    【Chromium】Base库的SimpleThread

    _;  base::Lock lock_;            // Locks delegates_  WaitableEvent dry_;    // Not signaled when there delegates_.empty());      work = delegates_.front();      delegates_.pop();      // Signal to any other if (delegates_.empty())        dry_.Reset();    }    // A NULL delegate pointer signals us to quit.    < num_threads_; ++i) {    threads_[i]->Join();    delete threads_[i];  }  threads_.clear();  DCHECK(delegates * delegate, int repeat_count) {  AutoLock locked(lock_);  for (int i = 0; i < repeat_count; ++i)    delegates

    48810编辑于 2024-03-13
领券