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.aproposFunction
apropos([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"
source
InteractiveUtils.varinfoFunction
varinfo(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 az minsize bayt olan nesneleri dahil eder. Varsayılan 0'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.

source
InteractiveUtils.versioninfoFunction
versioninfo(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
Warning

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.

source
InteractiveUtils.methodswithFunction
methodswith(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.

source
InteractiveUtils.subtypesFunction
subtypes(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
source
InteractiveUtils.supertypesFunction
supertypleri(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)
source
InteractiveUtils.editMethod
edit(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.

Julia 1.9

column argümanı en az Julia 1.9 gerektirir.

Ayrıca bkz. InteractiveUtils.define_editor.

source
InteractiveUtils.editMethod
edit(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.

Julia 1.1

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.

source
InteractiveUtils.@editMacro
@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.

Ayrıca bakınız: @less, @which.

source
InteractiveUtils.define_editorFunction
define_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 nesnesi
  • path - açılacak kaynak dosyanın yolu
  • line - 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
Julia 1.4

define_editor Julia 1.4'te tanıtıldı.

source
InteractiveUtils.lessMethod
less(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.

source
InteractiveUtils.lessMethod
less(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.

source
InteractiveUtils.@whichMacro
@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.

Ayrıca bakınız: @less, @edit.

source
InteractiveUtils.@functionlocMacro
@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.

source
InteractiveUtils.code_warntypeFunction
code_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.

source
InteractiveUtils.code_llvmFunction
code_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.

source
InteractiveUtils.@code_llvmMacro
@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.

source
InteractiveUtils.code_nativeFunction
code_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 :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.

source
InteractiveUtils.@code_nativeMacro
@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.

source
Base.@time_importsMacro
@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.

Not

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
Julia 1.8

Bu makro en az Julia 1.8 gerektirir.

source
InteractiveUtils.clipboardFunction
clipboard(x)

x'in basılı bir biçimini işletim sistemi panosuna ("kopyala") gönderir.

source
clipboard() -> String

İşletim sistemi panosunun içeriğiyle bir dize döndürür ("yapıştır").

source