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),:size
ve:summary
'dır.minsize
: yalnızca boyutu en azminsize
bayt 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
Unsigned
InteractiveUtils.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@edit
Fonksiyon 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`
end
define_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@less
Fonksiyon 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@which
Bir 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@functionloc
Bir 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_lowered
Fonksiyon 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_typed
Fonksiyon 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_warntype
Fonksiyon 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_llvm
Fonksiyon 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ı io
ya yazdırır.
- Montaj sözdizimini ayarlamak için
syntax
'ı:intel
(varsayılan) olarak intel sözdizimi veya:att
olarak AT&T sözdizimi için ayarlayın. - Kod yorumlarının ayrıntı seviyesini belirtmek için
debuginfo
'yu:source
(varsayılan) veya:none
olarak ayarlayın. - Eğer
binary
true
ise, her talimat için kısaltılmış bir adresle birlikte ikili makine kodunu da yazdırın. - Eğer
dump_module
false
ise, rodata veya direktifler gibi meta verileri yazdırmayın. - Eğer
raw
false
ise, 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_native
Fonksiyon 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:att
olarak ayarlayın. - Kod yorumlarının ayrıntılılığını ayarlamak için
debuginfo
'yu:source
(varsayılan) veya:none
olarak ayarlayın. binary
true
ise, her talimat için kısaltılmış bir adresle birlikte ikili makine kodunu da yazdırın.dump_module
false
ise, 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_imports
Bir 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üresi
Bu 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").