Yürütülen kod bir işlev veya komut dosyası olarak çalışıyorsa çalışma zamanında belirleyebilir misiniz? Varsa, önerilen yöntem nedir? Çok ilginç bir soru içinKodun bir komut dosyası veya işlev olarak yürütülüp yürütülmediğini nasıl belirleyebilirim?
cevap
+1.
Bunu belirlemenin bir yol düşünebiliriz. Yürütülen m-dosyanın kendisini ayrıştırın ve ilk olmayan önemsiz yorum olmayan satırdaki ilk sözcüğü kontrol edin. function
anahtar kelimesi ise, bir işlev dosyasıdır. Eğer değilse, bu bir senaryo. Bir senaryo eğer bir işlev dosyasıdır ve 0 ise çıkan değeri 1 olmalıdır
strcmp(textread([mfilename '.m'], '%s', 1, 'commentstyle', 'matlab'), 'function')
: Burada düzgün bir liner bu. Bu kodun söz konusu m-dosyasından çalıştırılması gerektiğini ve elbette ayrı bir işlev dosyasından çalıştırılmaması gerektiğini unutmayın. Bunu (herhangi bir kütüğün testleri yani biri) dışında bir genel işlevi yapmak istiyorsanız, sadece bu yüzden gibi, textread
istenen dosya adı dizesi geçirmek:
function y = isfunction(x)
y = strcmp(textread([x '.m'], '%s', 1, 'commentstyle', 'matlab'), 'function')
bu fonksiyon daha sağlam hale getirmek için Ayrıca, m-dosyasının gerçekte textread
'u denemeden önce var olduğunu doğrulayan hata işleme kodunu da ekleyebilirsiniz.
Başka bir yol var. Bir komut dosyasında çağrıldığında, nargin(...)
hata verir. Aşağıdaki kısa işlev nedenle soran ne yapmalıyım:
function result = isFunction(functionHandle)
%
% functionHandle: Can be a handle or string.
% result: Returns true or false.
% Try nargin() to determine if handle is a script:
try
nargin(functionHandle);
result = true;
catch exception
% If exception is as below, it is a script.
if (strcmp(exception.identifier, 'MATLAB:nargin:isScript'))
result = false;
else
% Else re-throw error:
throw(exception);
end
end
En güzel yolu olmayabilir, ama işe yarıyor.
Saygılar
Bu harika, teşekkürler! – slayton
- 1. İşlemimin etkileşimli olarak yürütülüp yürütülmediğini nasıl belirleyebilirim?
- 2. Script komut dosyasının Racket'te yürütülüp yürütülmediğini tespit etme?
- 3. Bir python komut dosyasının modül olarak alındığını mı yoksa komut dosyası olarak mı çalıştırıldığını nasıl belirleyebilirim?
- 4. Kodun bir metin dosyası olarak kaydedilmesi
- 5. Powershell ps1 dosyası "bir cmdlet, işlev, çalıştırılabilir program veya komut dosyası dosyası olarak tanınmadı."
- 6. Ruby On Rails: Runner komut dosyası ortamını nasıl belirleyebilirim
- 7. Install-PackageProvider bir cmdlet, işlev, komut dosyası veya çalıştırılabilir programın adı olarak tanınmadı
- 8. Bir div’in kimliğini çerez olarak nasıl belirleyebilirim?
- 9. Arama Python'da çoklu komut dosyalarından bir işlev
- 10. Php büyüktür uç komut dosyası olarak
- 11. Toplu komut dosyası olarak değişken dizeyi komut olarak çalıştırma
- 12. Extendscript içinden bir python veya kabuk komut dosyası nasıl çağrılır?
- 13. IE aralıklı olarak dinamik olarak eklenmiş bir komut dosyası yürütmez
- 14. GNU Ekranı - kabuk veya komut dosyası
- 15. 'Tamamen' bir iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
- 16. Komut satırında çalışan bir komut dosyası kendini nasıl bulabilir?
- 17. Klavyede şifrelerle programlı olarak nasıl oluşturulabilir/belirleyebilirim?
- 18. TortoiseHg: ‘hg’ dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
- 19. 'virtualenv' bir iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
- 20. İyonik bir iç veya dış komut çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
- 21. Jenkins'de bir komut dosyası root olarak nasıl çalıştırılır?
- 22. Perl'de, dosyamın modül olarak mı kullanılıyor veya komut dosyası olarak çalıştırılıyorsa nasıl öğrenebilirim?
- 23. Komut dosyası nasıl çalışır?
- 24. Clion'da .h dosyası için otomatik olarak işlev başlıkları nasıl oluşturulur?
- 25. python, iç veya dış komut olarak tanınmıyor
- 26. nuget iç veya dış komut olarak tanınmıyor
- 27. .bashrc olmadan çalıştırılabilir bir komut dosyası dosyası nasıl yapılır
- 28. Başka bir SQL komut dosyasından SQL komut dosyası nasıl aranır?
- 29. Windows toplu komut dosyası bir
- 30. Yürütme komut istemi komut dosyası nasıl oluşturulur
Mükemmel, teşekkürler! – slayton