在Lua或C编程中,是否应该实现一个名为零操作或空操作的函数或指令?

2026-03-31 22:401阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计478个文字,预计阅读时间需要2分钟。

在Lua或C编程中,是否应该实现一个名为零操作或空操作的函数或指令?

我有一个以下函数,它只返回其字符串参数:pythondef N(s): return send这个函数可以从`gettext`识别此功能名称。它仅为`.pot`提取器的良好标记。在C或Lua中实现`N()`会更有效率吗?你能给我一个经验法则吗?

我有以下函数只返回其字符串参数:

function N_(s) return s end

您可以从gettext识别此功能名称.它仅为.pot提取器的好处标记.

在C或Lua中实现N_()会更有效吗?

在Lua或C编程中,是否应该实现一个名为零操作或空操作的函数或指令?

你能给我一个经验法则吗?

另一个问题:

假设我的函数有点复杂:

function Z_(s) return dict[s] or s end

在C或Lua中实现Z_()会更有效吗?

(我将从Lua代码中调用N_()和Z_(),而不是从C代码调用.)

如果你在Lua度过大部分时间,那么在Lua中实现的功能不是非常处理器密集的功能很可能比C中的功能更有效.如果您将来某个时间最终使用 LuaJIT,则尤其如此.编译器总是能够从函数中推断出更多信息(如果它是语言中的信息),而不是它不知道任何关于它的一些模糊的C函数,并且它不必在不同的上下文中进行相同的跳跃.

在C中实现Z_的问题是你还必须在C中实现dict,其中Lua已经具有这样的功能.所以,这取决于你是否需要一些特别优化的哈希映射,也许C会更好.

如果您关心的是函数调用效率,为什么不只是缓存结果呢?

-- instead of doing: print(Z_('Hello world! My name is %1!', 'Lua')) -- perhaps do this: local greeting = Z_('Hello world! My name is %1!', 'Lua') print(greeting) -- reuse greeting at some later time.

当然,你的Z_函数看起来不像是需要替换,但我想它可能会在以后.但是,如果你从不需要替换,你也可以把它变成这样的表:

local Z = setmetatable({}, {__index = function(t,k) return k end}) Z['greetings'] = 'Hello world!' print(Z['greetings']) -- Hello world! print(Z['goodbye']) -- goodbye

如果表没有这样的条目,该表有一个__index元方法,它返回使用的密钥.

本文共计478个文字,预计阅读时间需要2分钟。

在Lua或C编程中,是否应该实现一个名为零操作或空操作的函数或指令?

我有一个以下函数,它只返回其字符串参数:pythondef N(s): return send这个函数可以从`gettext`识别此功能名称。它仅为`.pot`提取器的良好标记。在C或Lua中实现`N()`会更有效率吗?你能给我一个经验法则吗?

我有以下函数只返回其字符串参数:

function N_(s) return s end

您可以从gettext识别此功能名称.它仅为.pot提取器的好处标记.

在C或Lua中实现N_()会更有效吗?

在Lua或C编程中,是否应该实现一个名为零操作或空操作的函数或指令?

你能给我一个经验法则吗?

另一个问题:

假设我的函数有点复杂:

function Z_(s) return dict[s] or s end

在C或Lua中实现Z_()会更有效吗?

(我将从Lua代码中调用N_()和Z_(),而不是从C代码调用.)

如果你在Lua度过大部分时间,那么在Lua中实现的功能不是非常处理器密集的功能很可能比C中的功能更有效.如果您将来某个时间最终使用 LuaJIT,则尤其如此.编译器总是能够从函数中推断出更多信息(如果它是语言中的信息),而不是它不知道任何关于它的一些模糊的C函数,并且它不必在不同的上下文中进行相同的跳跃.

在C中实现Z_的问题是你还必须在C中实现dict,其中Lua已经具有这样的功能.所以,这取决于你是否需要一些特别优化的哈希映射,也许C会更好.

如果您关心的是函数调用效率,为什么不只是缓存结果呢?

-- instead of doing: print(Z_('Hello world! My name is %1!', 'Lua')) -- perhaps do this: local greeting = Z_('Hello world! My name is %1!', 'Lua') print(greeting) -- reuse greeting at some later time.

当然,你的Z_函数看起来不像是需要替换,但我想它可能会在以后.但是,如果你从不需要替换,你也可以把它变成这样的表:

local Z = setmetatable({}, {__index = function(t,k) return k end}) Z['greetings'] = 'Hello world!' print(Z['greetings']) -- Hello world! print(Z['goodbye']) -- goodbye

如果表没有这样的条目,该表有一个__index元方法,它返回使用的密钥.