为什么 rails 个作业 (ApplicationJob) 使用 splat 运算符?

Why do rails jobs (ApplicationJob) use splat operator?

我使用 rails 生成器创建了我的第一份工作:

rails g job do_something

哪个创建了作业文件:

class DoSomethingJob < ApplicationJob
  queue_as :default

  def perform(*args)
    # Do something later
  end
end

splat 运算符对我来说是新的(我知道它可以用来传递多个参数并将它们分组到一个数组中)。 我的问题是,为什么作业默认带有 splat 运算符 - def perform(*args)?我很想简单地删除默认的 *args,但我担心我可能会遗漏一些东西。

删除默认 *args 并像我对任何其他方法一样创建参数有什么问题吗?或者我是否需要在所有作业中使用 splat 运算符?

感谢任何帮助!

perform 方法的构建及其使用完全取决于您;如果您删除 splat 运算符,您将不会错过任何事情,调用作业不会传递隐式参数或您应该使用 args.last 或类似的东西处理的任何内容。

无论如何,splat 运算符只为您提供与任何 ruby 方法相同的多功能性,并且 rails 将其用作占位符。