Interactive Utilities

يوفر نموذج InteractiveUtils أدوات للاستخدام التفاعلي لـ Julia، مثل استكشاف الشيفرة والوصول إلى الحافظة. وهو مخصص للعمل التفاعلي ويتم تحميله تلقائيًا في interactive mode.

Base.Docs.aproposFunction
apropos([io::IO=stdout], pattern::Union{AbstractString,Regex})

ابحث عن وثائق متاحة تحتوي على إدخالات تحتوي على pattern.

عندما يكون pattern سلسلة، يتم تجاهل الحالة. يتم طباعة النتائج إلى io.

يمكن استدعاء apropos من وضع المساعدة في REPL عن طريق لف الاستعلام بين علامتي اقتباس مزدوجتين:

help?> "pattern"
source
InteractiveUtils.varinfoFunction
varinfo(m::Module=Main, pattern::Regex=r""; all=false, imported=false, recursive=false, sortby::Symbol=:name, minsize::Int=0)

إرجاع جدول Markdown يقدم معلومات حول المتغيرات العامة العالمية في وحدة، مع إمكانية تقييدها لتلك التي تتطابق مع pattern.

تقدير استهلاك الذاكرة هو حد أدنى تقريبي لحجم الهيكل الداخلي للكائن.

  • all : أيضًا قائمة بالأشياء غير العامة المعرفة في الوحدة، والأشياء المهملة، والأشياء التي تم إنشاؤها بواسطة المترجم.
  • imported : أيضًا قائمة بالأشياء المستوردة صراحة من وحدات أخرى.
  • recursive : تضمين الأشياء في الوحدات الفرعية بشكل متكرر، مع مراعاة نفس الإعدادات في كل منها.
  • sortby : العمود الذي يتم فرز النتائج بناءً عليه. الخيارات هي :name (افتراضي)، :size، و :summary.
  • minsize : تشمل فقط الأشياء التي يبلغ حجمها على الأقل minsize بايت. الافتراضي هو 0.

الناتج من varinfo مخصص لأغراض العرض فقط. انظر أيضًا names للحصول على مصفوفة من الرموز المعرفة في وحدة، والتي تناسب التلاعبات الأكثر عمومية.

source
InteractiveUtils.versioninfoFunction
versioninfo(io::IO=stdout; verbose::Bool=false)

اطبع معلومات حول إصدار جوليا المستخدم. يتم التحكم في الإخراج باستخدام معلمات الكلمات الرئيسية البوليانية:

  • verbose: طباعة جميع المعلومات الإضافية
Warning

قد يحتوي إخراج هذه الدالة على معلومات حساسة. قبل مشاركة الإخراج، يرجى مراجعة الإخراج وإزالة أي بيانات لا ينبغي مشاركتها علنًا.

انظر أيضًا: VERSION.

source
InteractiveUtils.methodswithFunction
methodswith(typ[, module or function]; supertypes::Bool=false])

إرجاع مصفوفة من الطرق التي تحتوي على وسيط من النوع typ.

يقيّد الوسيط الثاني الاختياري البحث إلى وحدة أو دالة معينة (الافتراضي هو جميع الوحدات العليا).

إذا كانت الكلمة الرئيسية supertypes تساوي true، يتم أيضًا إرجاع الوسائط التي لها نوع أب من typ، باستثناء النوع Any.

انظر أيضًا: methods.

source
InteractiveUtils.subtypesFunction
subtypes(T::DataType)

إرجاع قائمة بالأنواع الفرعية المباشرة لنوع البيانات T. لاحظ أن جميع الأنواع الفرعية المحملة حاليًا مشمولة، بما في ذلك تلك غير المرئية في الوحدة الحالية.

انظر أيضًا supertype، supertypes، methodswith.

أمثلة

julia> subtypes(Integer)
3-element Vector{Any}:
 Bool
 Signed
 Unsigned
source
InteractiveUtils.supertypesFunction
supertypes(T::Type)

إرجاع مجموعة (T, ..., Any) من T وجميع أنواعها العليا، كما تحددها المكالمات المتتالية لدالة supertype، مرتبة حسب <: ومُنهية بـ Any.

انظر أيضًا subtypes.

أمثلة

julia> supertypes(Int)
(Int64, Signed, Integer, Real, Number, Any)
source
InteractiveUtils.editMethod
edit(path::AbstractString, line::Integer=0, column::Integer=0)

قم بتحرير ملف أو دليل مع توفير رقم السطر بشكل اختياري لتحرير الملف عنده. ارجع إلى موجه julia عند الخروج من المحرر. يمكن تغيير المحرر عن طريق تعيين JULIA_EDITOR أو VISUAL أو EDITOR كمتغير بيئي.

Julia 1.9

يتطلب وسيط column على الأقل Julia 1.9.

انظر أيضًا InteractiveUtils.define_editor.

source
InteractiveUtils.editMethod
edit(function, [types])
edit(module)

قم بتحرير تعريف دالة، مع تحديد مجموعة من الأنواع بشكل اختياري للإشارة إلى أي طريقة يجب تحريرها. بالنسبة للوحدات، افتح ملف المصدر الرئيسي. يجب تحميل الوحدة باستخدام using أو import أولاً.

Julia 1.1

يتطلب edit على الوحدات على الأقل Julia 1.1.

لضمان إمكانية فتح الملف عند السطر المحدد، قد تحتاج إلى استدعاء InteractiveUtils.define_editor أولاً.

source
InteractiveUtils.@editMacro
@edit

يقيم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، وينادي على دالة edit على التعبير الناتج.

انظر أيضًا: @less، @which.

source
InteractiveUtils.define_editorFunction
define_editor(fn, pattern; wait=false)

حدد محررًا جديدًا يتطابق مع pattern يمكن استخدامه لفتح ملف (ربما عند رقم سطر معين) باستخدام fn.

حجة fn هي دالة تحدد كيفية فتح ملف باستخدام المحرر المعطى. يجب أن تأخذ أربعة حجج، كما يلي:

  • cmd - كائن أمر أساسي للمحرر
  • path - المسار إلى ملف المصدر لفتحه
  • line - رقم السطر لفتح المحرر عنده
  • column - رقم العمود لفتح المحرر عنده

يمكن للمحررات التي لا يمكنها الفتح عند سطر معين باستخدام أمر أو عمود معين تجاهل حجة line و/أو column. يجب أن تعيد دالة fn إما كائن Cmd مناسب لفتح ملف أو nothing للإشارة إلى أنها لا تستطيع تحرير هذا الملف. استخدم nothing للإشارة إلى أن هذا المحرر غير مناسب للبيئة الحالية ويجب محاولة محرر آخر. من الممكن إضافة المزيد من الخطافات العامة للتحرير التي لا تحتاج إلى تشغيل أوامر خارجية عن طريق دفع رد نداء مباشرة إلى المتجه EDITOR_CALLBACKS.

حجة pattern هي سلسلة نصية، تعبير منتظم، أو مصفوفة من السلاسل النصية والتعبيرات المنتظمة. لكي يتم استدعاء fn، يجب أن يتطابق أحد الأنماط مع قيمة EDITOR أو VISUAL أو JULIA_EDITOR. بالنسبة للسلاسل النصية، يجب أن تساوي السلسلة basename من الكلمة الأولى لأمر المحرر، مع إزالة امتدادها، إن وجد. على سبيل المثال، "vi" لا تتطابق مع "vim -g" ولكنها تتطابق مع "/usr/bin/vi -m"؛ كما أنها تتطابق مع vi.exe. إذا كان pattern تعبيرًا منتظمًا، فإنه يتم مطابقته مع جميع أوامر المحرر كسلسلة نصية محمية. تتطابق مصفوفة الأنماط إذا تطابق أي من عناصرها. إذا تطابقت محررات متعددة، يتم استخدام الأكثر إضافة مؤخرًا.

بشكل افتراضي، لا تنتظر جوليا حتى يغلق المحرر، حيث يتم تشغيله في الخلفية. ومع ذلك، إذا كان المحرر يعتمد على الطرفية، فربما ترغب في تعيين wait=true وستنتظر جوليا حتى يغلق المحرر قبل الاستئناف.

إذا تم تعيين أحد متغيرات بيئة المحرر، ولكن لا يتطابق أي إدخال محرر معه، يتم استدعاء إدخال المحرر الافتراضي:

(cmd, path, line, column) -> `$cmd $path`

لاحظ أن العديد من المحررات قد تم تعريفها بالفعل. يجب أن تعمل جميع الأوامر التالية بالفعل:

  • emacs
  • emacsclient
  • vim
  • nvim
  • nano
  • micro
  • kak
  • helix
  • textmate
  • mate
  • kate
  • subl
  • atom
  • notepad++
  • Visual Studio Code
  • open
  • pycharm
  • bbedit

أمثلة

يحدد ما يلي استخدام emacs المعتمد على الطرفية:

define_editor(
    r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
    `$cmd +$line $path`
end
جوليا 1.4

تم تقديم define_editor في جوليا 1.4.

source
InteractiveUtils.lessMethod
less(file::AbstractString, [line::Integer])

عرض ملف باستخدام العارض الافتراضي، مع إمكانية توفير رقم السطر الابتدائي. يعود إلى موجه julia عند الخروج من العارض.

source
InteractiveUtils.lessMethod
less(function, [types])

عرض تعريف دالة باستخدام عارض الصفحات الافتراضي، مع إمكانية تحديد مجموعة من الأنواع للإشارة إلى أي طريقة يجب رؤيتها.

source
InteractiveUtils.@whichMacro
@which

عند تطبيقه على استدعاء دالة أو ماكرو، يقوم بتقييم المعاملات للاستدعاء المحدد، ويعيد كائن Method للطريقة التي سيتم استدعاؤها لتلك المعاملات. عند تطبيقه على متغير، فإنه يعيد الوحدة التي تم ربط المتغير بها. إنه يستدعي دالة which.

انظر أيضًا: @less، @edit.

source
InteractiveUtils.@functionlocMacro
@functionloc

عند تطبيقه على استدعاء دالة أو ماكرو، يقوم بتقييم المعاملات للاستدعاء المحدد، ويعيد زوجًا (filename,line) يعطي الموقع للطريقة التي سيتم استدعاؤها لتلك المعاملات. إنه يستدعي دالة functionloc.

source
InteractiveUtils.@code_typedMacro
@code_typed

يقيم المعاملات لدالة أو استدعاء ماكرو، ويحدد أنواعها، وينادي على code_typed على التعبير الناتج. استخدم المعامل الاختياري optimize مع

@code_typed optimize=true foo(x)

للتحكم فيما إذا كانت تحسينات إضافية، مثل الإدراج، تُطبق أيضًا.

انظر أيضًا: code_typed، @code_warntype، @code_lowered، @code_llvm، @code_native.

source
InteractiveUtils.code_warntypeFunction
code_warntype([io::IO], f, types; debuginfo=:default)

يطبع ASTs المنخفضة والمستنتجة من النوع للطرق التي تطابق الدالة العامة المحددة وتوقيع النوع لـ io الذي يكون افتراضيًا stdout. يتم تمييز ASTs بطريقة تؤدي إلى التأكيد على الأنواع "غير الورقية" التي قد تكون مشكلة للأداء (إذا كانت الألوان متاحة، يتم عرضها باللون الأحمر). وهذا يعمل كتحذير من عدم استقرار النوع المحتمل.

ليست جميع الأنواع غير الورقية مشكلة بشكل خاص للأداء، وخصائص الأداء لنوع معين هي تفاصيل تنفيذية للمترجم. ستخطئ code_warntype في جانب تلوين الأنواع باللون الأحمر إذا كانت قد تكون مصدر قلق للأداء، لذا قد يتم تلوين بعض الأنواع باللون الأحمر حتى لو لم تؤثر على الأداء. عادةً ما تكون الاتحادات الصغيرة من الأنواع الملموسة ليست مصدر قلق، لذا يتم تمييزها باللون الأصفر.

قد تكون حجة الكلمة الرئيسية debuginfo واحدة من :source أو :none (افتراضي)، لتحديد مستوى تفصيل تعليقات الكود.

انظر قسم @code_warntype في صفحة نصائح الأداء من الدليل لمزيد من المعلومات.

انظر أيضًا: @code_warntype، code_typed، code_lowered، code_llvm، code_native.

source
InteractiveUtils.code_llvmFunction
code_llvm([io=stdout,], f, types; raw=false, dump_module=false, optimize=true, debuginfo=:default)

يظهر رموز LLVM الناتجة عن تشغيل الطريقة المطابقة للدالة العامة المحددة وتوقيع النوع إلى io.

إذا كانت الكلمة الرئيسية optimize غير محددة، فسيتم عرض الشيفرة قبل تحسينات LLVM. تتم إزالة جميع البيانات الوصفية واستدعاءات dbg.* من الشيفرة المطبوعة. للحصول على IR الكامل، قم بتعيين الكلمة الرئيسية raw إلى true. لتفريغ الوحدة الكاملة التي تحتوي على الدالة (مع التعريفات)، قم بتعيين الكلمة الرئيسية dump_module إلى true. قد تكون الكلمة الرئيسية debuginfo واحدة من source (افتراضي) أو none، لتحديد مستوى تعليقات الشيفرة.

انظر أيضًا: @code_llvm, code_warntype, code_typed, code_lowered, code_native.

source
InteractiveUtils.@code_llvmMacro
@code_llvm

يقوم بتقييم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، ويستدعي code_llvm على التعبير الناتج. قم بتعيين المعاملات الاختيارية raw و dump_module و debuginfo و optimize عن طريق وضعها وقيمتها قبل استدعاء الدالة، مثل هذا:

@code_llvm raw=true dump_module=true debuginfo=:default f(x)
@code_llvm optimize=false f(x)

تتحكم optimize فيما إذا كانت التحسينات الإضافية، مثل الإدراج، ستطبق أيضًا. تجعل raw جميع البيانات الوصفية واستدعاءات dbg.* مرئية. يمكن أن تكون debuginfo واحدة من :source (افتراضي) أو :none، لتحديد مستوى تفصيل تعليقات الشيفرة. تقوم dump_module بطباعة الوحدة الكاملة التي تحتوي على الدالة.

انظر أيضًا: code_llvm، @code_warntype، @code_typed، @code_lowered، @code_native.

source
InteractiveUtils.code_nativeFunction
code_native([io=stdout,], f, types; syntax=:intel, debuginfo=:default, binary=false, dump_module=true)

يطبّع التعليمات البرمجية الأصلية الناتجة عن تشغيل الطريقة المطابقة للدالة العامة المحددة وتوقيع النوع إلى io.

  • قم بتعيين صيغة التجميع عن طريق تعيين syntax إلى :intel (افتراضي) لصيغة إنتل أو :att لصيغة AT&T.
  • حدد مستوى التفاصيل في تعليقات التعليمات البرمجية عن طريق تعيين debuginfo إلى :source (افتراضي) أو :none.
  • إذا كانت binary تساوي true، اطبع أيضًا كود الآلة الثنائي لكل تعليمات مسبوقة بعنوان مختصر.
  • إذا كانت dump_module تساوي false، فلا تطبع بيانات التعريف مثل rodata أو التوجيهات.
  • إذا كانت raw تساوي false، يتم حذف التعليمات غير المثيرة للاهتمام (مثل مقدمة دالة نقطة الأمان).

انظر أيضًا: @code_native, code_warntype, code_typed, code_lowered, code_llvm.

source
InteractiveUtils.@code_nativeMacro
@code_native

يقيم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، ويستدعي code_native على التعبير الناتج.

قم بتعيين أي من المعاملات الاختيارية syntax، debuginfo، binary أو dump_module بوضعها قبل استدعاء الدالة، مثل هذا:

@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)
  • قم بتعيين بناء الجملة assembly عن طريق تعيين syntax إلى :intel (افتراضي) لبناء جملة Intel أو :att لبناء جملة AT&T.
  • حدد مستوى وضوح تعليقات الكود عن طريق تعيين debuginfo إلى :source (افتراضي) أو :none.
  • إذا كانت binary تساوي true، اطبع أيضًا كود الآلة الثنائي لكل تعليمة مسبوقة بعنوان مختصر.
  • إذا كانت dump_module تساوي false، فلا تطبع بيانات التعريف مثل rodata أو التوجيهات.

انظر أيضًا: code_native، @code_warntype، @code_typed، @code_lowered، @code_llvm.

source
Base.@time_importsMacro
@time_imports

ماكرو لتنفيذ تعبير وإنتاج تقرير عن أي وقت تم قضاؤه في استيراد الحزم وملحقاتها. سيتم الإبلاغ عن أي وقت تجميع كنسبة مئوية، وكم كان من ذلك إعادة تجميع، إن وجدت.

يتم طباعة سطر واحد لكل حزمة أو ملحق حزمة. المدة المعروضة هي الوقت لاستيراد تلك الحزمة نفسها، دون احتساب الوقت لتحميل أي من تبعياتها.

في جوليا 1.9+ ملحقات الحزم ستظهر كـ Parent → Extension.

!!! ملاحظة خلال عملية التحميل، تقوم الحزمة باستيراد جميع تبعياتها بشكل متسلسل، وليس فقط تبعياتها المباشرة.

julia> @time_imports using CSV
     50.7 ms  Parsers 17.52% compilation time
      0.2 ms  DataValueInterfaces
      1.6 ms  DataAPI
      0.1 ms  IteratorInterfaceExtensions
      0.1 ms  TableTraits
     17.5 ms  Tables
     26.8 ms  PooledArrays
    193.7 ms  SentinelArrays 75.12% compilation time
      8.6 ms  InlineStrings
     20.3 ms  WeakRefStrings
      2.0 ms  TranscodingStreams
      1.4 ms  Zlib_jll
      1.8 ms  CodecZlib
      0.8 ms  Compat
     13.1 ms  FilePathsBase 28.39% compilation time
   1681.2 ms  CSV 92.40% compilation time

!!! توافق "جوليا 1.8" يتطلب هذا الماكرو على الأقل جوليا 1.8

source
InteractiveUtils.clipboardFunction
clipboard(x)

إرسال شكل مطبوع من x إلى حافظة نظام التشغيل ("نسخ").

source
clipboard() -> String

إرجاع سلسلة تحتوي على محتويات حافظة نظام التشغيل ("لصق").

source