โมดูล Elixir Simple จะสร้าง“ Argument Error” เท่านั้น

Nov 01 2020

ฉันมีโมดูลแบบสแตนด์อโลนที่เรียบง่ายซึ่งให้ผล:

ยาอายุวัฒนะ im_bad.ex
** ข้อผิดพลาดอาร์กิวเมนต์ (ArgumentError)

ใน IEX:

=> iex
Erlang / OTP 23 [erts-11.1] [source] [64-bit] [smp: 12: 12] [ds: 12: 12: 10] [async-threads: 1] [hipe]

Interactive Elixir (1.9.4) - กด Ctrl + C เพื่อออก (พิมพ์ h () ENTER เพื่อขอความช่วยเหลือ)
iex (1)> ค "im_bad.ex"

== ข้อผิดพลาดในการคอมไพล์ในไฟล์ im_bad.ex ==
** ข้อผิดพลาดอาร์กิวเมนต์ (ArgumentError)

** ข้อผิดพลาดอาร์กิวเมนต์ (ArgumentError)

รหัส:

defmodule ImplBad ทำ
  def run_addition_pro issues (aconfig) ทำ
    do_addition_pro issues (aconfig)
  จบ
จบ

วางโค้ด 5 บรรทัดนี้ในไฟล์ด้วยตัวเอง

ฉันรู้ว่า do_addition_pro issues () ไม่มีอยู่ แต่ฉันคาดว่าจะมีข้อผิดพลาดที่ไม่ได้กำหนดกับหมายเลขบรรทัด

ฉันแตกโค้ดนี้จากไฟล์โปรเจ็กต์ที่มี do_addition_pro issues ()

ฉันคาดหวังข้อมูลเพิ่มเติมเล็กน้อยจากคอมไพเลอร์ ฉันต้องทำการ "ค้นหาแบบไบนารี" จากโมดูลประมาณ 1k LOC เพื่อระบุปัญหานี้

ปัญหานี้เป็นยาอายุวัฒนะ 1.9.4 หรือไม่?

คำตอบ

3 AlekseiMatiushkin Nov 02 2020 at 01:58

นี่เป็นปัญหาในการใช้งานErlang/OTP 23 และ Elixir 1.9.4พร้อมกัน

Elixir 1.9เป็นรุ่นเก่ากว่าOTP 23แต่ยาอายุวัฒนะอย่างเต็มที่ยกระดับ OTP จึงอาศัยอยู่กับบางคำเตือน / ข้อความมาจากErlangคอมไพเลอร์ในระหว่างการรวบรวม

ที่กล่าวว่าการปรับลดรุ่นOTPเป็นเวอร์ชันElixir 1.9นั้นเป็นสิ่งที่รับรู้ ( 21ก็ใช้ได้ฉันเชื่อว่า) หรือการอัปเกรดElixirเป็นรุ่นล่าสุด1.11.1จะช่วยแก้ปัญหาในการผลิตแฟนซีได้

== Compilation error in file /tmp/test.ex ==
** (CompileError) /tmp/test.ex:3: undefined function do_addition_problems/1
    (elixir 1.11.1) src/elixir_locals.erl:114: anonymous fn/3 in :elixir_locals.ensure_no_undefined_local/3
    (stdlib 3.13.2) erl_eval.erl:680: :erl_eval.do_apply/6