---
layout: doc
title: calls / call_other
---
# call_other

### 名称

    call_other() - 呼叫在其它对象中的函数（方法）

### 语法

    unknown call_other( object ob, string func, ... );
    unknown call_other( object ob, mixed *args);
    unknown call_other( object *obs, string func, ... );
    unknown call_other( object *obs, mixed *args );

### 描述

    呼叫其它对象中的方法，因为返回值为调用方法的返回值，所以在编译阶段无法判断返回值的类型，最好在使用时做类型检查。字符串 `func` 是对象 `ob` 中被调用的方法名称，而第3、4……个等参数会做为第1、2……个参数按顺序传递给 `func`。

    如果 call_other 函数第一个对象参数是数组，那么 call_other 会逐一呼叫它们的 `func`，返回值也是一个数组。

    如果 call_other 函数的第二个参数是数组，那么数组的第一个元素必须是要调用的方法名字符串 `func` ,剩余的元素则是要传入方法的参数。

    这里有一个使用 call_other() 更好的方式:

    object ob | object *obs -> func ( ... );

    如：
    call_other(ob, "query", "name");

    可以写成：
    ob->query("name");

    如果第二个参数使用数组，以上示例可以写成：
    call_other(ob, ({ "query", "name" }));

    而第一个参数是数组的示例如下：
    users()->quit();

### 翻译 ###

    雪风(i@mud.ren)
