Interactive Utilities
InteractiveUtils modülü, Julia'nın etkileşimli kullanımı için kod içgörüleri ve panoya erişim gibi yardımcı programlar sağlar. Etkileşimli çalışma için tasarlanmıştır ve interactive mode içinde otomatik olarak yüklenir.
Base.Docs.apropos — Functionapropos([io::IO=stdout], pattern::Union{AbstractString,Regex})pattern içeren girişler için mevcut doküman dizelerini arayın.
pattern bir dize olduğunda, büyük/küçük harf dikkate alınmaz. Sonuçlar io'ya yazdırılır.
apropos, sorguyu çift tırnak içine alarak REPL'deki yardım modundan çağrılabilir:
help?> "pattern"InteractiveUtils.varinfo — Functionvarinfo(m::Module=Main, pattern::Regex=r""; all=false, imported=false, recursive=false, sortby::Symbol=:name, minsize::Int=0)Bir modüldeki genel değişkenler hakkında bilgi veren bir markdown tablosu döndürün, isteğe bağlı olarak pattern ile eşleşenlerle sınırlı.
Hafıza tüketimi tahmini, nesnenin iç yapısının boyutu için yaklaşık bir alt sınırdır.
all: modülde tanımlanan kamuya açık olmayan nesneleri, kullanımdan kaldırılmış nesneleri ve derleyici tarafından üretilen nesneleri de listeleyin.imported: diğer modüllerden açıkça içe aktarılan nesneleri de listeleyin.recursive: alt modüllerdeki nesneleri de dahil edin, her birinde aynı ayarları gözlemleyin.sortby: sonuçları sıralamak için kullanılacak sütun. Seçenekler:name(varsayılan),:sizeve:summary'dır.minsize: yalnızca boyutu en azminsizebayt olan nesneleri dahil eder. Varsayılan0'dır.
varinfo çıktısı yalnızca görüntüleme amaçlıdır. Daha genel manipülasyonlar için bir modülde tanımlanan sembollerin bir dizisini almak üzere names fonksiyonuna da bakın.
InteractiveUtils.versioninfo — Functionversioninfo(io::IO=stdout; verbose::Bool=false)Kullanımda olan Julia sürümü hakkında bilgi yazdırır. Çıktı, boolean anahtar argümanları ile kontrol edilir:
verbose: tüm ek bilgileri yazdır
Bu fonksiyonun çıktısı hassas bilgiler içerebilir. Çıktıyı paylaşmadan önce, lütfen çıktıyı gözden geçirin ve kamuya açık olarak paylaşılmaması gereken verileri kaldırın.
Ayrıca bakınız: VERSION.
InteractiveUtils.methodswith — Functionmethodswith(typ[, modül veya fonksiyon]; üsttipler::Bool=false])typ türünde bir argüman ile yöntemlerin bir dizisini döndürür.
İsteğe bağlı ikinci argüman, aramayı belirli bir modül veya fonksiyonla sınırlamak için kullanılır (varsayılan, tüm üst düzey modüllerdir).
üsttipler anahtar kelimesi true ise, Any türü hariç, typ türünün bir üst türüne sahip argümanları da döndürür.
Ayrıca bkz: methods.
InteractiveUtils.subtypes — Functionsubtypes(T::DataType)DataType T'nin doğrudan alt türlerinin bir listesini döndürür. Şu anda yüklenmiş olan tüm alt türler dahil edilir, bunlar mevcut modülde görünmeyenler de dahil.
Ayrıca bkz. supertype, supertypes, methodswith.
Örnekler
julia> subtypes(Integer)
3-element Vector{Any}:
Bool
Signed
UnsignedInteractiveUtils.supertypes — Functionsupertypleri(T::Type)T ve tüm süper tiplerinin bir demetini (T, ..., Any) olarak döndürür; bu, supertype fonksiyonuna ardışık çağrılarla belirlenir, <: sırasına göre listelenir ve Any ile sonlandırılır.
Ayrıca bkz. subtypes.
Örnekler
julia> supertypes(Int)
(Int64, Signed, Integer, Real, Number, Any)InteractiveUtils.edit — Methodedit(path::AbstractString, line::Integer=0, column::Integer=0)Bir dosyayı veya dizini düzenleyin, isteğe bağlı olarak dosyayı düzenlemek için bir satır numarası sağlayın. Düzenleyiciden çıktığınızda julia istemine geri dönün. Düzenleyici, bir ortam değişkeni olarak JULIA_EDITOR, VISUAL veya EDITOR ayarlanarak değiştirilebilir.
column argümanı en az Julia 1.9 gerektirir.
Ayrıca bkz. InteractiveUtils.define_editor.
InteractiveUtils.edit — Methodedit(function, [types])
edit(module)Bir fonksiyonun tanımını düzenleyin, isteğe bağlı olarak hangi yöntemin düzenleneceğini belirtmek için bir türler demeti belirtebilirsiniz. Modüller için ana kaynak dosyasını açın. Modülün önce using veya import ile yüklenmesi gerekir.
Modüller üzerinde edit kullanmak en az Julia 1.1 gerektirir.
Belirtilen satırda dosyanın açılabilmesini sağlamak için önce InteractiveUtils.define_editor çağrısını yapmanız gerekebilir.
InteractiveUtils.@edit — Macro@editFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye edit fonksiyonunu çağırır.
InteractiveUtils.define_editor — Functiondefine_editor(fn, pattern; wait=false)Yeni bir pattern ile eşleşen editör tanımlayın, bu editör bir dosyayı (belirli bir satır numarasına göre) fn kullanarak açmak için kullanılabilir.
fn argümanı, verilen editör ile bir dosyayı nasıl açacağınızı belirleyen bir işlevdir. Aşağıdaki dört argümanı almalıdır:
cmd- editör için bir temel komut nesnesipath- açılacak kaynak dosyanın yoluline- editörü açmak için kullanılacak satır numarasıcolumn- editörü açmak için kullanılacak sütun numarası
Belirli bir satıra veya belirli bir sütuna açamayan editörler line ve/veya column argümanını göz ardı edebilir. fn geri çağrısı, bir dosyayı açmak için uygun bir Cmd nesnesi döndürmeli veya bu dosyayı düzenleyemeyeceklerini belirtmek için nothing döndürmelidir. Bu editörün mevcut ortam için uygun olmadığını belirtmek için nothing kullanın ve başka bir editör denenmelidir. Dış komutları başlatmak zorunda olmayan daha genel düzenleme kancaları eklemek mümkündür; bu, geri çağrıyı doğrudan EDITOR_CALLBACKS vektörüne iterek yapılabilir.
pattern argümanı bir dize, düzenli ifade veya dize ve düzenli ifadelerden oluşan bir dizi olabilir. fn'nin çağrılması için, desenlerden biri EDITOR, VISUAL veya JULIA_EDITOR değerine uymalıdır. Dizeler için, dize, editör komutunun ilk kelimesinin basename ile eşleşmeli ve uzantısı, varsa, kaldırılmalıdır. Örneğin, "vi" "vim -g" ile eşleşmez, ancak "/usr/bin/vi -m" ile eşleşir; ayrıca vi.exe ile de eşleşir. Eğer pattern bir regex ise, tüm editör komutu, bir shell-escape edilmiş dize olarak karşılaştırılır. Bir dizi deseni, öğelerinden herhangi biri eşleşirse eşleşir. Birden fazla editör eşleşirse, en son eklenen kullanılır.
Varsayılan olarak, julia editörün kapanmasını beklemez, arka planda çalıştırır. Ancak, editör terminal tabanlıysa, muhtemelen wait=true ayarlamak isteyeceksiniz ve julia editör kapanmadan önce bekleyecektir.
Editör ortam değişkenlerinden biri ayarlandığında, ancak hiçbir editör girişi buna uymadığında, varsayılan editör girişi çağrılır:
(cmd, path, line, column) -> `$cmd $path`Birçok editörün zaten tanımlandığını unutmayın. Aşağıdaki tüm komutlar zaten çalışmalıdır:
- emacs
- emacsclient
- vim
- nvim
- nano
- micro
- kak
- helix
- textmate
- mate
- kate
- subl
- atom
- notepad++
- Visual Studio Code
- open
- pycharm
- bbedit
Örnekler
Aşağıdaki, terminal tabanlı emacs kullanımını tanımlar:
define_editor(
r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
`$cmd +$line $path`
enddefine_editor Julia 1.4'te tanıtıldı.
InteractiveUtils.less — Methodless(file::AbstractString, [line::Integer])Varsayılan sayfa göstericisi kullanarak bir dosyayı gösterir, isteğe bağlı olarak bir başlangıç satırı numarası sağlar. Sayfa göstericisinden çıktığınızda julia istemine geri döner.
InteractiveUtils.less — Methodless(function, [types])Bir işlevin tanımını varsayılan sayfalandırıcıyı kullanarak gösterir, isteğe bağlı olarak hangi yöntemin görüleceğini belirtmek için bir türler demeti belirtebilirsiniz.
InteractiveUtils.@less — Macro@lessFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye less fonksiyonunu çağırır.
Ayrıca bakınız: @edit, @which, @code_lowered.
InteractiveUtils.@which — Macro@whichBir fonksiyon veya makro çağrısına uygulandığında, belirtilen çağrının argümanlarını değerlendirir ve bu argümanlar için çağrılacak olan yöntemin Method nesnesini döndürür. Bir değişkene uygulandığında, değişkenin bağlandığı modülü döndürür. which fonksiyonunu çağırır.
InteractiveUtils.@functionloc — Macro@functionlocBir fonksiyon veya makro çağrısına uygulandığında, belirtilen çağrının argümanlarını değerlendirir ve bu argümanlar için çağrılacak yöntemin konumunu veren bir demet (dosya_adı, satır) döndürür. functionloc fonksiyonunu çağırır.
InteractiveUtils.@code_lowered — Macro@code_loweredFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye code_lowered çağrısı yapar.
Ayrıca bakınız: code_lowered, @code_warntype, @code_typed, @code_llvm, @code_native.
InteractiveUtils.@code_typed — Macro@code_typedFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye code_typed çağrısı yapar. Ek optimizasyonların, örneğin inline işlemlerinin de uygulanıp uygulanmayacağını kontrol etmek için isteğe bağlı optimize argümanını kullanın:
@code_typed optimize=true foo(x)Ayrıca bakınız: code_typed, @code_warntype, @code_lowered, @code_llvm, @code_native.
InteractiveUtils.code_warntype — Functioncode_warntype([io::IO], f, types; debuginfo=:default)Verilen genel işlev ve io için tür imzasına uyan yöntemler için düşürülmüş ve tür çıkarılmış AST'leri yazdırır; varsayılan olarak stdout'a. AST'ler, performans için sorunlu olabilecek "non-leaf" türlerin vurgulanacak şekilde anotasyonlanmıştır (renk mevcutsa, kırmızı olarak gösterilir). Bu, potansiyel tür istikrarsızlığına dair bir uyarı olarak hizmet eder.
Tüm non-leaf türler performans açısından özellikle sorunlu değildir ve belirli bir türün performans özellikleri derleyicinin bir uygulama ayrıntısıdır. code_warntype, performans kaygısı olabilecek türleri kırmızı renkle vurgulama konusunda temkinli davranır, bu nedenle bazı türler performansı etkilemese bile kırmızı renkle vurgulanabilir. Somut türlerin küçük birleşimleri genellikle bir sorun değildir, bu nedenle bunlar sarı renkle vurgulanır.
Anahtar argüman debuginfo, kod yorumlarının ayrıntı seviyesini belirtmek için :source veya :none (varsayılan) değerlerinden biri olabilir.
Daha fazla bilgi için kılavuzun Performans İpuçları sayfasındaki @code_warntype bölümüne bakın.
Ayrıca: @code_warntype, code_typed, code_lowered, code_llvm, code_native.
InteractiveUtils.@code_warntype — Macro@code_warntypeFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye code_warntype çağrısı yapar.
Ayrıca bakınız: 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)Verilen genel işlev ve tür imzası için eşleşen yöntemin çalıştırılması için üretilen LLVM bit kodlarını io'ya yazdırır.
optimize anahtar kelimesi ayarlanmamışsa, kod LLVM optimizasyonlarından önce gösterilecektir. Tüm meta veriler ve dbg.* çağrıları basılan bit kodundan kaldırılır. Tam IR için raw anahtar kelimesini true olarak ayarlayın. Fonksiyonu kapsayan tüm modülü (deklarasyonlarla birlikte) dökmek için dump_module anahtar kelimesini true olarak ayarlayın. Anahtar kelime argümanı debuginfo, kod yorumlarının ayrıntı seviyesini belirtmek için kaynak (varsayılan) veya yok olarak biri olabilir.
Ayrıca bakınız: @code_llvm, code_warntype, code_typed, code_lowered, code_native.
InteractiveUtils.@code_llvm — Macro@code_llvmFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve elde edilen ifadeye code_llvm çağrısı yapar. İsteğe bağlı anahtar kelime argümanlarını raw, dump_module, debuginfo, optimize olarak ayarlamak için bunları ve değerlerini fonksiyon çağrısından önce koyun, şöyle:
@code_llvm raw=true dump_module=true debuginfo=:default f(x)
@code_llvm optimize=false f(x)optimize, ek optimizasyonların, örneğin inline etme gibi, uygulanıp uygulanmayacağını kontrol eder. raw, tüm meta verileri ve dbg.* çağrılarını görünür hale getirir. debuginfo, kod yorumlarının ayrıntı seviyesini belirtmek için :source (varsayılan) veya :none olabilir. dump_module, fonksiyonu kapsayan tüm modülü yazdırır.
Ayrıca bakınız: 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)Verilen genel işlev ve tür imzasına uyan yöntemin çalıştırılması için üretilen yerel montaj talimatlarını ioya yazdırır.
- Montaj sözdizimini ayarlamak için
syntax'ı:intel(varsayılan) olarak intel sözdizimi veya:attolarak AT&T sözdizimi için ayarlayın. - Kod yorumlarının ayrıntı seviyesini belirtmek için
debuginfo'yu:source(varsayılan) veya:noneolarak ayarlayın. - Eğer
binarytrueise, her talimat için kısaltılmış bir adresle birlikte ikili makine kodunu da yazdırın. - Eğer
dump_modulefalseise, rodata veya direktifler gibi meta verileri yazdırmayın. - Eğer
rawfalseise, ilginç olmayan talimatlar (safepoint işlev prologu gibi) atlanır.
Ayrıca bakınız: @code_native, code_warntype, code_typed, code_lowered, code_llvm.
InteractiveUtils.@code_native — Macro@code_nativeFonksiyon veya makro çağrısının argümanlarını değerlendirir, türlerini belirler ve sonuçlanan ifadeye code_native çağrısı yapar.
İsteğe bağlı anahtar argümanlardan herhangi birini syntax, debuginfo, binary veya dump_module olarak ayarlamak için, bunu fonksiyon çağrısından önce koyun, şöyle:
@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)- Montaj sözdizimini ayarlamak için
syntax'ı Intel sözdizimi için:intel(varsayılan) veya AT&T sözdizimi için:attolarak ayarlayın. - Kod yorumlarının ayrıntılılığını ayarlamak için
debuginfo'yu:source(varsayılan) veya:noneolarak ayarlayın. binarytrueise, her talimat için kısaltılmış bir adresle birlikte ikili makine kodunu da yazdırın.dump_modulefalseise, rodata veya direktifler gibi meta verileri yazdırmayın.
Ayrıca bakınız: code_native, @code_warntype, @code_typed, @code_lowered, @code_llvm.
Base.@time_imports — Macro@time_importsBir ifadeyi yürütmek ve paketlerin ve bunların bağımlılıklarının içeriği için harcanan zamanı raporlamak üzere bir makro. Herhangi bir derleme süresi bir yüzde olarak rapor edilecek ve eğer varsa hangi kısmının yeniden derleme olduğu belirtilecektir.
Her paket veya paket uzantısı için bir satır yazdırılır. Gösterilen süre, o paketin kendisini içe aktarmak için harcanan zamandır, bağımlılıklarının yüklenmesi için harcanan zamanı içermez.
Julia 1.9+ paket uzantıları Ana → Uzantı olarak gösterilecektir.
Yükleme süreci sırasında bir paket, yalnızca doğrudan bağımlılıklarını değil, tüm bağımlılıklarını sıralı bir şekilde içe aktarır.
julia> @time_imports using CSV
50.7 ms Parsers 17.52% derleme süresi
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% derleme süresi
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% derleme süresi
1681.2 ms CSV 92.40% derleme süresiBu makro en az Julia 1.8 gerektirir.
InteractiveUtils.clipboard — Functionclipboard(x)x'in basılı bir biçimini işletim sistemi panosuna ("kopyala") gönderir.
clipboard() -> Stringİşletim sistemi panosunun içeriğiyle bir dize döndürür ("yapıştır").