将这个函数接口转为`类`接口, const objCmd={ name:['convertLeters','cnvl'], } export function cmds(str_org){ return objCmd }
时间: 2024-03-15 16:44:27 浏览: 19
好的,我可以帮您将这个函数接口转换为类接口。请看下面的代码:
```
class Cmds {
constructor() {
this.name = ['convertLeters', 'cnvl'];
}
getCmds(str_org) {
return this;
}
}
export default Cmds;
```
这样,您可以通过创建 `Cmds` 类的实例来获取命令,例如:
```
import Cmds from './cmds.js';
const objCmd = new Cmds();
console.log(objCmd.name); // ['convertLeters', 'cnvl']
```
请注意,由于您在原始函数接口中返回了一个对象,因此我们需要将 `getCmds` 方法返回 `this`,以便在调用 `getCmds` 方法时返回整个类实例。
相关问题
HandlerInfo make_handler(void (_C::*fn)(const mavlink::mavlink_message_t*, _T &)) { auto bfn = std::bind(fn, static_cast<_C*>(this), std::placeholders::_1, std::placeholders::_2); const auto id = _T::MSG_ID; const auto name = _T::NAME; const auto type_hash_ = typeid(_T).hash_code(); return HandlerInfo { id, name, type_hash_, [bfn](const mavlink::mavlink_message_t *msg, const mavconn::Framing framing) { if (framing != mavconn::Framing::ok) return; mavlink::MsgMap map(msg); _T obj; obj.deserialize(map); bfn(msg, obj); } }; }
这是一个函数 make_handler,它接受一个指向类成员函数的指针 fn,并返回一个 HandlerInfo 对象。HandlerInfo 对象包含以下信息:
- 消息 ID:_T::MSG_ID
- 消息名称:_T::NAME
- 类型哈希码:typeid(_T).hash_code()
- 回调函数:一个 lambda 表达式,它将传入的 mavlink_message_t 和 mavconn::Framing 参数转换为 _T 对象,调用 fn 函数,并传入 mavlink_message_t 和 _T 对象作为参数。
该函数的实现使用了 std::bind 和 placeholders,将 fn 和 this 指针绑定到了一个新的函数对象 bfn 上,以便在 lambda 表达式中使用。lambda 表达式中先判断 mavconn::Framing 参数是否为 ok,如果不是则直接返回;否则将 mavlink_message_t 转换为 _T 对象,并调用 fn 函数处理。
std::string trim(const std::string& str) { size_t start = str.find_first_not_of(" \t\n\r"); size_t end = str.find_last_not_of(" \t\n\r"); if (start == std::string::npos || end == std::string::npos) { return ""; } return str.substr(start, end - start + 1); } 把这个函数改进,加一个参数,删除指定字符
可以加一个额外的参数,表示需要删除的字符集合。修改后的代码如下:
```
std::string trim(const std::string& str, const std::string& chars) {
size_t start = str.find_first_not_of(chars);
size_t end = str.find_last_not_of(chars);
if (start == std::string::npos || end == std::string::npos) {
return "";
}
return str.substr(start, end - start + 1);
}
```
使用示例:
```
std::string str = " \t\n\r hello world! \n\r\t ";
std::string result = trim(str, " \t\n\r");
std::cout << result << std::endl; // output: "hello world!"
```