标签: dispatch

win32com.client.Dispatch 有效,但 win32com.client.gencache.EnsureDispatch 无效

我正在学习 python 的 win32com ,我遇到了一个奇怪的问题。

我正在尝试导出字典列表中的 Outlook 联系人。我的代码与 win32com.client.Dispatch("Outlook.Application) 完美配合。但它使用 win32com.client.gencache.EnsureDispatch("Outlook.Application) 返回 0 个联系人,这应该更快、更“安全”。这是我的代码:

class MapiImport():
    def __init__(self):
        self.olApp = win32com.client.Dispatch("Outlook.Application")
        self.namespace = self.olApp.GetNamespace(u"MAPI")
        # olFolderContacts = 10 :
        self.mapiContacts = self.namespace.GetDefaultFolder(10).Items

    def getContacts(self, *fields):
        contacts = []
        # Class == 40 is ContactItem
        # Class == 69 is DistListItem
        # Exclude ditribution list and others objects != ContactItem
        for contact in filter(lambda x: x.Class == 40,self.mapiContacts) :
            if not fields :
                ctact = dict((x.Name,x.Value) for x in contact.ItemProperties)
            else …
Run Code Online (Sandbox Code Playgroud)

python outlook pywin32 dispatch win32com

5
推荐指数
1
解决办法
1万
查看次数

bash:部分匹配到完整单词的大小写

我编写了一个 bash 脚本,它将命令作为第一个位置参数,并使用 case 构造作为类似于以下内容的调度:

do_command() {
  # responds to invocation `$0 command ...`
}

do_copy() {
  # respond to invocation: `$0 copy...`
}

do_imperative() {
  # respond to invocation: `$0 imperative ...`
}

cmd=$1
shift
case $cmd in
command)
  do_command $*
  ;;
copy)
  do_copy $*
  ;;
imperative)
  do_imperative $*
  ;;
*)
  echo "Usage: $0 [ command | copy | imperative ]" >&2
  ;;
esac
Run Code Online (Sandbox Code Playgroud)

该脚本根据调用决定哪个函数$1,然后将剩余的参数传递给该函数。我想在不同的部分匹配上添加能力调度,但我想以一种优雅的方式做到这一点(优雅的定义是一种既易于阅读又不会冗长到碍眼或分散注意力的方式)。

明显有效(但不优雅)的解决方案可能是这样的:

case $cmd in
command|comman|comma|comm|com)
  do_command $*
  ;;
copy|cop)
  do_copy $*
  ;; …
Run Code Online (Sandbox Code Playgroud)

bash command pattern-matching dispatch

5
推荐指数
1
解决办法
3249
查看次数

朱莉娅:多种类型的相同功能?

我有一个在向量上定义的大函数,但我希望它也可以使用单个值。我希望第一个参数的类型是向量或数字。

我尝试以下方法:

function bigfunction(x::Vector, y::Float64=0.5)

  # lots of stuff
  z = x .+ y
  return z
end


bigfunction(x::Number) = bigfunction()
Run Code Online (Sandbox Code Playgroud)

该函数适用于向量,但不适用于数字。

bigfunction([0, 1, 3])
bigfunction(2)
Run Code Online (Sandbox Code Playgroud)

Union{}我应该像有时看到的那样做一些事情吗?或者以不同的方式重新定义方法?

methods function dispatch julia

5
推荐指数
1
解决办法
2199
查看次数

有没有办法使用反应导航创建和分派/触发自定义事件?

借助 DOM,您可以轻松地使用 Javascript 创建触发自定义事件,如下所示:

var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { /* ... */ }, false);

// Dispatch the event.
elem.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

有没有办法用 React-Native 做到这一点?

javascript events triggers dispatch react-native

5
推荐指数
1
解决办法
6084
查看次数

Rust:对向量中结构的多态调用

我是 Rust 的新手,我正在尝试了解该语言的基础知识。

\n\n

考虑以下特征

\n\n
trait Function {\n    fn value(&self, arg: &[f64]) -> f64;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

和两个实现它的结构:

\n\n
struct Add {}\n\nstruct Multiply {}\n\nimpl Function for Add {\n    fn value(&self, arg: &[f64]) -> f64 {\n        arg[0] + arg[1]\n    }\n}\n\nimpl Function for Multiply {\n    fn value(&self, arg: &[f64]) -> f64 {\n        arg[0] * arg[1]\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的main()函数中,我想将Add\xc2\xa0and的两个实例分组Multiply到一个向量中,然后调用该value方法。以下作品:

\n\n
fn main() {\n    let x = vec![1.0, 2.0];\n    let funcs: Vec<&dyn Function> = vec![&Add {}, &Multiply …
Run Code Online (Sandbox Code Playgroud)

polymorphism traits dispatch rust trait-objects

5
推荐指数
1
解决办法
1665
查看次数

dispatch_after循环/重复

我想创建一个这样的循环:

while (TRUE){
  dispatch_after(...{
    <some action>
  });
}
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad之后.我的想法是重复重复dispatch_after.dispatch_after在执行操作之前等待两秒钟.

这不起作用 - 屏幕只是空白?它是否陷入循环或......?

objective-c dispatch grand-central-dispatch ios

4
推荐指数
3
解决办法
7746
查看次数

这个设计使用动态还好吗?

我在应用程序中有一个要处理的不同作业列表.我正在使用一种使用不同类型来表示不同类型作业的设计 - 这很自然,因为它们具有不同的属性等等.对于处理,我正在考虑根据下面的代码在C#中使用dynamic关键字.

abstract class Animal {}    
class Cat : Animal {} 
class Dog : Animal {}

class AnimalProcessor
{
    public void Process(Cat cat)
    {
        System.Diagnostics.Debug.WriteLine("Do Cat thing");
    }

    public void Process(Dog dog)
    {
        System.Diagnostics.Debug.WriteLine("Do Dog thing");
    }

    public void Process(Animal animal)
    {
        throw new NotSupportedException(String.Format("'{0}' is type '{1}' which isn't supported.",
            animal,
            animal.GetType()));
    }
}

internal class Program
{
    private static void Main(string[] args)
    {
        List<Animal> animals = new List<Animal>
        {
            new Cat(),
            new Cat(),
            new Dog(),
            new Cat() …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism design-patterns dynamic dispatch

4
推荐指数
1
解决办法
121
查看次数

解释与Python中的动态调度惩罚

我看了Brandon Rhodes关于Cython的演讲 - "EXE的日子在我们身上".

布兰登在09:30提到,对于一段特定的短代码,跳过解释给出了40%的加速,而跳过分配和发送则给出了574%的加速(10:10).

我的问题是 - 如何测量特定的代码?是否需要手动提取底层c命令,然后以某种方式使运行时运行它们?

这是一个非常有趣的观察,但我如何重新创建实验呢?

python dynamic-programming performance-testing cython dispatch

4
推荐指数
1
解决办法
341
查看次数

Znwm和ZdlPv在组装中是什么意思?

我是汇编程序的新手,我试图弄清楚C ++如何处理汇编程序中的动态调度。

查看汇编代码时,我发现有2个异常调用:

call _Znwm
call _ZdlPv
Run Code Online (Sandbox Code Playgroud)

这些没有我可以追踪到的子程序。通过检查代码,Znwm似乎在调用其构造函数时返回对象的地址,但是我不确定。ZdlPv处于无法访问的代码块中(它被跳过了)。C ++:

Fruit * f;
f = new Apple();
Run Code Online (Sandbox Code Playgroud)

x86:

# BB#1:
    mov eax, 8
    mov edi, eax
    call    _Znwm
    mov rdi, rax
    mov rcx, rax
.Ltmp6:
    mov qword ptr [rbp - 48], rdi # 8-byte Spill
    mov rdi, rax
    mov qword ptr [rbp - 56], rcx # 8-byte Spill
    call    _ZN5AppleC2Ev
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激。谢谢。

c++ assembly dynamic dispatch

4
推荐指数
1
解决办法
1810
查看次数

Aurelia在一次行动中两次改变状态

我正在开发aurelia并使用aurelia-store进行应用程序状态管理.在从服务器加载数据时,我想更改isLoading字段true/false以在相关组件上显示掩码.所以我在我的州中定义了一个属性isLoading(例如).在加载操作中,我想首先将加载状态更改为true,并将数据检索为false.所以根据这个字段的值(isLoading)我想在组件上显示掩码.

我想要这样的东西:

export async function getRoles(state) {
  try {
    return Object.assign({}, state, { isRolesListLoading: {busy: true} });
    const getRoles = await accountManagement.getRoles();
    return Object.assign({}, state, { getRoles, isRolesListLoading: {busy: false} });

  } catch (error) {
    console.log('error getRoles "error": ', error);
  }
}
Run Code Online (Sandbox Code Playgroud)

但正如我从aurelia文件中得知的那样,在一个动作中不允许进行两次状态更改.

我该怎么办?

我有一个想法,首先在这个动作中发出另一个动作,使isLoading成为真,然后完成工作.像这样的东西:

export async function getRoles(state) {
  try {
    desiredDispatch('goToLoadingState'); // fake code
    const getRoles = await accountManagement.getRoles();
    return Object.assign({}, state, { getRoles, isRolesListLoading: {busy: false} });

  } catch (error) {
    console.log('error getRoles "error": ', …
Run Code Online (Sandbox Code Playgroud)

action dispatch aurelia aurelia-store

4
推荐指数
1
解决办法
141
查看次数