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
Unsigned
InteractiveUtils.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
إرجاع سلسلة تحتوي على محتويات حافظة نظام التشغيل ("لصق").