Interactive Utilities
يوفر نموذج InteractiveUtils أدوات للاستخدام التفاعلي لـ Julia، مثل استكشاف الشيفرة والوصول إلى الحافظة. وهو مخصص للعمل التفاعلي ويتم تحميله تلقائيًا في interactive mode.
Base.Docs.apropos — Functionapropos([io::IO=stdout], pattern::Union{AbstractString,Regex})ابحث عن وثائق متاحة تحتوي على إدخالات تحتوي على pattern.
عندما يكون pattern سلسلة، يتم تجاهل الحالة. يتم طباعة النتائج إلى io.
يمكن استدعاء apropos من وضع المساعدة في REPL عن طريق لف الاستعلام بين علامتي اقتباس مزدوجتين:
help?> "pattern"InteractiveUtils.varinfo — Functionvarinfo(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 للحصول على مصفوفة من الرموز المعرفة في وحدة، والتي تناسب التلاعبات الأكثر عمومية.
InteractiveUtils.versioninfo — Functionversioninfo(io::IO=stdout; verbose::Bool=false)اطبع معلومات حول إصدار جوليا المستخدم. يتم التحكم في الإخراج باستخدام معلمات الكلمات الرئيسية البوليانية:
verbose: طباعة جميع المعلومات الإضافية
قد يحتوي إخراج هذه الدالة على معلومات حساسة. قبل مشاركة الإخراج، يرجى مراجعة الإخراج وإزالة أي بيانات لا ينبغي مشاركتها علنًا.
انظر أيضًا: VERSION.
InteractiveUtils.methodswith — Functionmethodswith(typ[, module or function]; supertypes::Bool=false])إرجاع مصفوفة من الطرق التي تحتوي على وسيط من النوع typ.
يقيّد الوسيط الثاني الاختياري البحث إلى وحدة أو دالة معينة (الافتراضي هو جميع الوحدات العليا).
إذا كانت الكلمة الرئيسية supertypes تساوي true، يتم أيضًا إرجاع الوسائط التي لها نوع أب من typ، باستثناء النوع Any.
انظر أيضًا: methods.
InteractiveUtils.subtypes — Functionsubtypes(T::DataType)إرجاع قائمة بالأنواع الفرعية المباشرة لنوع البيانات T. لاحظ أن جميع الأنواع الفرعية المحملة حاليًا مشمولة، بما في ذلك تلك غير المرئية في الوحدة الحالية.
انظر أيضًا supertype، supertypes، methodswith.
أمثلة
julia> subtypes(Integer)
3-element Vector{Any}:
Bool
Signed
UnsignedInteractiveUtils.supertypes — Functionsupertypes(T::Type)إرجاع مجموعة (T, ..., Any) من T وجميع أنواعها العليا، كما تحددها المكالمات المتتالية لدالة supertype، مرتبة حسب <: ومُنهية بـ Any.
انظر أيضًا subtypes.
أمثلة
julia> supertypes(Int)
(Int64, Signed, Integer, Real, Number, Any)InteractiveUtils.edit — Methodedit(path::AbstractString, line::Integer=0, column::Integer=0)قم بتحرير ملف أو دليل مع توفير رقم السطر بشكل اختياري لتحرير الملف عنده. ارجع إلى موجه julia عند الخروج من المحرر. يمكن تغيير المحرر عن طريق تعيين JULIA_EDITOR أو VISUAL أو EDITOR كمتغير بيئي.
يتطلب وسيط column على الأقل Julia 1.9.
انظر أيضًا InteractiveUtils.define_editor.
InteractiveUtils.edit — Methodedit(function, [types])
edit(module)قم بتحرير تعريف دالة، مع تحديد مجموعة من الأنواع بشكل اختياري للإشارة إلى أي طريقة يجب تحريرها. بالنسبة للوحدات، افتح ملف المصدر الرئيسي. يجب تحميل الوحدة باستخدام using أو import أولاً.
يتطلب edit على الوحدات على الأقل Julia 1.1.
لضمان إمكانية فتح الملف عند السطر المحدد، قد تحتاج إلى استدعاء InteractiveUtils.define_editor أولاً.
InteractiveUtils.@edit — Macro@editيقيم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، وينادي على دالة edit على التعبير الناتج.
InteractiveUtils.define_editor — Functiondefine_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تم تقديم define_editor في جوليا 1.4.
InteractiveUtils.less — Methodless(file::AbstractString, [line::Integer])عرض ملف باستخدام العارض الافتراضي، مع إمكانية توفير رقم السطر الابتدائي. يعود إلى موجه julia عند الخروج من العارض.
InteractiveUtils.less — Methodless(function, [types])عرض تعريف دالة باستخدام عارض الصفحات الافتراضي، مع إمكانية تحديد مجموعة من الأنواع للإشارة إلى أي طريقة يجب رؤيتها.
InteractiveUtils.@less — Macro@lessيقيم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، ويستدعي دالة less على التعبير الناتج.
انظر أيضًا: @edit، @which، @code_lowered.
InteractiveUtils.@which — Macro@whichعند تطبيقه على استدعاء دالة أو ماكرو، يقوم بتقييم المعاملات للاستدعاء المحدد، ويعيد كائن Method للطريقة التي سيتم استدعاؤها لتلك المعاملات. عند تطبيقه على متغير، فإنه يعيد الوحدة التي تم ربط المتغير بها. إنه يستدعي دالة which.
InteractiveUtils.@functionloc — Macro@functionlocعند تطبيقه على استدعاء دالة أو ماكرو، يقوم بتقييم المعاملات للاستدعاء المحدد، ويعيد زوجًا (filename,line) يعطي الموقع للطريقة التي سيتم استدعاؤها لتلك المعاملات. إنه يستدعي دالة functionloc.
InteractiveUtils.@code_lowered — Macro@code_loweredيقيم المعاملات لاستدعاء الدالة أو الماكرو، ويحدد أنواعها، ويستدعي code_lowered على التعبير الناتج.
انظر أيضًا: code_lowered، @code_warntype، @code_typed، @code_llvm، @code_native.
InteractiveUtils.@code_typed — Macro@code_typedيقيم المعاملات لدالة أو استدعاء ماكرو، ويحدد أنواعها، وينادي على code_typed على التعبير الناتج. استخدم المعامل الاختياري optimize مع
@code_typed optimize=true foo(x)للتحكم فيما إذا كانت تحسينات إضافية، مثل الإدراج، تُطبق أيضًا.
انظر أيضًا: code_typed، @code_warntype، @code_lowered، @code_llvm، @code_native.
InteractiveUtils.code_warntype — Functioncode_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.
InteractiveUtils.@code_warntype — Macro@code_warntypeيقيم المعاملات لاستدعاء الدالة أو الماكرو، يحدد أنواعها، ويستدعي code_warntype على التعبير الناتج.
انظر أيضًا: code_warntype، @code_typed، @code_lowered، @code_llvm، @code_native.
InteractiveUtils.code_llvm — Functioncode_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.
InteractiveUtils.@code_llvm — Macro@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.
InteractiveUtils.code_native — Functioncode_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.
InteractiveUtils.@code_native — Macro@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.
Base.@time_imports — Macro@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
InteractiveUtils.clipboard — Functionclipboard(x)إرسال شكل مطبوع من x إلى حافظة نظام التشغيل ("نسخ").
clipboard() -> Stringإرجاع سلسلة تحتوي على محتويات حافظة نظام التشغيل ("لصق").